Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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
Javascript 如何在选择列表项并显示其详细信息时添加弹出模式_Javascript_Reactjs_React Native_Modal Dialog_Popup - Fatal编程技术网

Javascript 如何在选择列表项并显示其详细信息时添加弹出模式

Javascript 如何在选择列表项并显示其详细信息时添加弹出模式,javascript,reactjs,react-native,modal-dialog,popup,Javascript,Reactjs,React Native,Modal Dialog,Popup,正如标题所说,我需要为要显示的选定尺寸的每个列表项创建一个模式弹出窗口。我正在使用react native弹出对话框,但没有结果。你能帮我吗?这是我的密码: step1 = () => { return ( <View style={{ flex: 8}}> <Text h3 style={{ ...styles.title, marginVertical: 10.0 }}>{this.stat

正如标题所说,我需要为要显示的选定尺寸的每个列表项创建一个模式弹出窗口。我正在使用react native弹出对话框,但没有结果。你能帮我吗?这是我的密码:

step1 = () => {
        return (
            <View style={{ flex: 8}}>
                <Text h3 style={{ ...styles.title, marginVertical: 10.0 }}>{this.state.user=="User"?"Size":"CargoSize"}</Text>
                <ScrollView>
                    <View style={{ marginHorizontal: 16.0 }}>{
                        this.state.size.map((l, i) => (
                            <ListItem key={i}  onPress={() => this.setState({sizeSelected: i, sizeName: l.title, sizeId: l.id})} underlayColor='transparent'
                            containerStyle={{backgroundColor: this.state.sizeSelected==i?'#F76858':'white', borderWidth: 1.0,
                            borderColor: '#707070', marginBottom: 10.0, paddingVertical: 5.0, paddingHorizontal: 40.0}}>
                                <ListItem.Content>
                                    <View style={{
                                        flexDirection: 'row', alignItems: 'center',
                                        justifyContent: 'center'
                                    }}>
                                        <Text style={styles.textSize}>{l.title}</Text>
                                        <Text style={{ fontSize: 16 }}>{l.example}</Text>
                                    </View>
                                </ListItem.Content>
                            </ListItem>
                        ))
                    }</View>
                </ScrollView>
            </View>
        );
    }
step1=()=>{
返回(
{this.state.user==“user”?“Size”:“CargoSize”}
{
this.state.size.map((l,i)=>(
this.setState({sizeSelected:i,sizeName:l.title,sizeId:l.id})underlayColor='transparent'
containerStyle={{backgroundColor:this.state.sizeSelected==i?'#F76858':'white',borderWidth:1.0,
边框颜色:'#707070',边框底部:10.0,填充垂直:5.0,填充水平:40.0}>
{l.title}
{l.example}
))
}
);
}

我相信您可以在列表组件中声明一个模式,并在用户按下listItem时显示或隐藏该模式。此外,将按下的项目激活,并将项目传递给您的模态,以便模态可以显示激活项目的详细信息

App.js

export default function App() {
  const [modalVisible, setModalVisible] = React.useState(false);
  const [activeItem, setActiveItem] = React.useState(null);

  const onPress = (item) => {
    setActiveItem(item)
    setModalVisible(true)
  }

  const renderItem = ({ item }) => (
    <TouchableOpacity onPress={()=>onPress(item)}>
      <Item title={item.title} />
    </TouchableOpacity>
  );

  return (
    <View style={styles.container}>
      <FlatList
        data={DATA}
        renderItem={renderItem}
        keyExtractor={(item) => item.id}
      />
      <Popup modalVisible={modalVisible} setModalVisible={setModalVisible} activeItem={activeItem} />
    </View>
  );
}
导出默认函数App(){
const[modalVisible,setModalVisible]=React.useState(false);
const[activeItem,setActiveItem]=React.useState(null);
const onPress=(项目)=>{
setActiveItem(项目)
setModalVisible(真)
}
常量renderItem=({item})=>(
onPress(项目)}>
);
返回(
项目id}
/>
);
}
Modal.js

export default function Popup({modalVisible, setModalVisible, activeItem}) {
  return (
    <View style={styles.centeredView}>
      <Modal
        animationType="slide"
        transparent={true}
        visible={modalVisible}
        onRequestClose={() => {
          Alert.alert('Modal has been closed.');
        }}>
        <View style={styles.centeredView}>
          <View style={styles.modalView}>
            <Text style={styles.modalText}>{activeItem?.title}</Text>

            <TouchableHighlight
              style={{ ...styles.openButton, backgroundColor: '#2196F3' }}
              onPress={() => {
                setModalVisible(!modalVisible);
              }}>
              <Text style={styles.textStyle}>Hide Modal</Text>
            </TouchableHighlight>
          </View>
        </View>
      </Modal>
    </View>
  );
}
导出默认函数弹出窗口({modalVisible,setModalVisible,activeItem}){
返回(
{
警报。警报('模式已关闭');
}}>
{activeItem?.title}
{
setModalVisible(!modalVisible);
}}>
隐藏模态
);
}
这是一个为你工作的演示