Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native React Native中的模态视图_React Native - Fatal编程技术网

React native React Native中的模态视图

React native React Native中的模态视图,react-native,React Native,我是一个新的本地人,我试图以一种方式表达自己的观点。我有一个表视图,当单击其中一行时,我希望视图以模式显示 这就是我现在实施过渡的方式: renderbooks(books) { return ( <TouchableHighlight onPress={() => this.showbooksDetail(books)} underlayColor='#dddddd'> <View>

我是一个新的本地人,我试图以一种方式表达自己的观点。我有一个表视图,当单击其中一行时,我希望视图以模式显示

这就是我现在实施过渡的方式:

renderbooks(books) {
     return (
          <TouchableHighlight onPress={() => this.showbooksDetail(books)}  underlayColor='#dddddd'>
              <View>
                  <View style={styles.container}>

                      <View style={styles.rightContainer}>
                          <Text style={styles.title}>{books.title}</Text>



                          </View>
                  </View>
                  <View style={styles.separator} />
              </View>
          </TouchableHighlight>
     );
 }
 showbooksDetail(books){
   this.props.navigator.push({
     title:books.title,
     component: ProductView,
     passProps:{books}
   });
 }
renderbooks(书籍){
返回(
this.showbooksDetail(books)}underlayColor='#dddddd'>
{books.title}
);
}
展示书籍详情(书籍){
这个是.props.navigator.push({
书名:书籍,
组件:ProductView,
通行证:{books}
});
}
我如何修改它,以便视图可以以模式显示

仅供参考:我已经研究了多个问题和示例项目,例如:

查看内置的。它是在iOS上实现的,Android的实现应该在React Native的下一个版本中出现

该文档包含一个关于如何使用它的示例

在您的情况下,它将类似于:

renderBooks(books) {
   ...
   <Modal
      animated={true}
      transparent={true}
      visible={!!this.state.selectedBook}>
      <Text>{this.state.selectedBook.title}</Text>
   </Modal>

   ...
}

showDetail(book) {
    this.setState({
        selectedBook: book,
    });
}
renderBooks(书籍){
...
{this.state.selectedBook.title}
...
}
展示细节(书籍){
这是我的国家({
精选图书:图书,
});
}

我正在使用react native modalbox。你可以在顶部、中间、底部等处显示模态,这真是太棒了。请检查一下下面的链接:

样本:

    import React from 'react';
    import Modal from 'react-native-modalbox';
    import Button from 'react-native-button';

    import {
      AppRegistry,
      Text,
      StyleSheet,
      ScrollView,
      View,
      Dimensions
    } from 'react-native';

    class Example extends React.Component {

      constructor() {
        super();
        this.state = {
          isOpen: false,
          isDisabled: false,
          swipeToClose: true,
          sliderValue: 0.3
        };
      }

      onClose() {
        console.log('Modal just closed');
      }

      onOpen() {
        console.log('Modal just openned');
      }

      onClosingState(state) {
        console.log('the open/close of the swipeToClose just changed');
      }

    render() {    
        return (
          <View style={styles.wrapper}>
            <Button onPress={() => this.refs.modal1.open()} style={styles.btn}>Basic modal</Button>
            <Button onPress={() => this.refs.modal2.open()} style={styles.btn}>Position top</Button>
            <Button onPress={() => this.refs.modal3.open()} style={styles.btn}>Position centered + backdrop + disable</Button>
            <Button onPress={() => this.refs.modal4.open()} style={styles.btn}>Position bottom + backdrop + slider</Button>

        <Modal
              style={[styles.modal, styles.modal1]}
              ref={"modal1"}
              swipeToClose={this.state.swipeToClose}
              onClosed={this.onClose}
              onOpened={this.onOpen}
              onClosingState={this.onClosingState}>
                <Text style={styles.text}>Basic modal</Text>
                <Button onPress={() => this.setState({swipeToClose: !this.state.swipeToClose})} style={styles.btn}>Disable swipeToClose({this.state.swipeToClose ? "true" : "false"})</Button>
            </Modal>
        <Modal style={[styles.modal, styles.modal2]} backdrop={false}  position={"top"} ref={"modal2"}>
                  <Text style={[styles.text, {color: "white"}]}>Modal on top</Text>
                </Modal>

                <Modal style={[styles.modal, styles.modal3]} position={"center"} ref={"modal3"} isDisabled={this.state.isDisabled}>
                  <Text style={styles.text}>Modal centered</Text>
                  <Button onPress={() => this.setState({isDisabled: !this.state.isDisabled})} style={styles.btn}>Disable ({this.state.isDisabled ? "true" : "false"})</Button>
                </Modal>

                <Modal style={[styles.modal, styles.modal4]} position={"bottom"} ref={"modal4"}>
                  <Text style={styles.text}>Modal on bottom with backdrop</Text>

        </Modal>
      </View>
        );
      }

    }
    const styles = StyleSheet.create({
      modal: {
        justifyContent: 'center',
        alignItems: 'center'
      },

      modal2: {
        height: 230,
        backgroundColor: "#3B5998"
      },

      modal3: {
        height: 300,
        width: 300
      },

      modal4: {
        height: 300
      },

      wrapper: {
          paddingTop: 50,
    flex: 1
  },

});

AppRegistry.registerComponent('Example', () => Example);
从“React”导入React;
从“react native modalbox”导入模态;
从“反应本机按钮”导入按钮;
进口{
评估学,
文本,
样式表,
滚动视图,
看法
尺寸
}从“反应本机”;
类示例扩展了React.Component{
构造函数(){
超级();
此.state={
伊索彭:错,
isDisabled:错误,
swipeToClose:没错,
滑块值:0.3
};
}
onClose(){
log('Modal just closed');
}
onOpen(){
log('Modal just opened');
}
onClosingState(状态){
log(“刚刚更改了swipeToClose的打开/关闭”);
}
render(){
返回(
this.refs.modal1.open()}style={styles.btn}>Basic model
this.refs.modal2.open()}style={styles.btn}>Position top
this.refs.modal3.open()}style={styles.btn}>positioncentered+background+disable
this.refs.modal4.open()}style={styles.btn}>位置底部+背景+滑块
基本模态
this.setState({swipeToClose:!this.state.swipeToClose})style={styles.btn}>禁用swipeToClose({this.state.swipeToClose?:“true”:“false”})
顶部的模态
模态中心
this.setState({isDisabled:!this.state.isDisabled})style={styles.btn}>Disable({this.state.isDisabled?“true”):“false”})
底部有背景的模态
);
}
}
const styles=StyleSheet.create({
模态:{
为内容辩护:“中心”,
对齐项目:“中心”
},
模式2:{
身高:230,
背景颜色:“3B5998”
},
模式3:{
身高:300,
宽度:300
},
模式4:{
身高:300
},
包装器:{
paddingTop:50,
弹性:1
},
});
AppRegistry.registerComponent('示例',()=>示例);

检查此简单而功能强大的小型库react native modal animated,只需通过添加react native modal animated或npm安装react native modal animated安装即可

import { AnimatedModal } from 'react-native-modal-animated
      <View style={styles.container}>

        <TouchableOpacity
          onPress={() => {
            this.setState({ modalVisible: true });
            alert
          }}
          style={styles.button}
        >
          <Text style={styles.buttonText}>Show Modal</Text>
        </TouchableOpacity>


        <AnimatedModal
          visible={this.state.modalVisible}
          onBackdropPress={() => {
            this.setState({ modalVisible: false });
          }}
          animationType="vertical"
          duration={600}
        >
          {/*Any child can be used here */}
          <View style={styles.modalCard}>
            <Text>I'm AnimatedModal</Text>
            <Text style={{fontWeight: 'bold', marginTop: 10}}>vertical</Text>
          </View>
        </AnimatedModal>
      </View>
    );
  }
}
从'react native model animated'导入{animatedmodel}
{
this.setState({modalVisible:true});
警觉的
}}
style={style.button}
>
显示模态
{
this.setState({modalVisible:false});
}}
animationType=“垂直”
持续时间={600}
>
{/*此处可以使用任何子级*/}
我是动画模特
垂直的
);
}
}