react-native - 如何为 react native 中的组件创建一个单独的类并将其用作公共类?
问题描述
嗨,我正在学习本机反应。我正在使用本机反应的模态组件。我需要在应用程序中多次使用相同的。这里的代码现在我试图调用函数 {this.createModal(dataForMaritalStatus)} 而不是
/* <Modal visible={this.state.isModalVisible}
onRequestClose={() => {
this.setState({ isModalVisible: false })
}}
animationType="fade"
transparent={true}
>
<View style={styles.modalContainer}>
<ScrollView
showsVerticalScrollIndicator={true}
>
{dataForMaritalStatus === null ? <Text style={styles.nodata}>No data Found </Text> : dataForMaritalStatus.map((status, id) => (
<View key={id}>
<TouchableOpacity
style={styles.opacity}
onPress={() => {
this._toggleModal()
}}>
<Text style={styles.taskList}>{status.value}</Text>
</TouchableOpacity>
</View>
))}
</ScrollView>
</View>
</Modal>
*/
那么如何为这个组件创建一个通用类并传递不同的数据数组并在渲染方法中使用它呢?出于不同的目的,数据会有所不同,我需要为不同的目的维护不同的状态。
编辑:我已经为它编写了一个方法,但它调用了函数但它不渲染模式,我需要渲染它吗?
createModal = (data) => {
<Modal visible={this.state.isModalVisible}
onRequestClose={() => {
this.setState({ isModalVisible: false })
}}
animationType="fade"
transparent={true}
>
<View style={styles.modalContainer}>
<ScrollView
showsVerticalScrollIndicator={true}
>
{data === null ? <Text style={styles.nodata}>No data Found </Text> : data.map((status, id) => (
<View key={id}>
<TouchableOpacity
style={styles.opacity}
onPress={() => {
this._toggleModal()
}}>
<Text style={styles.taskList}>{status.value}</Text>
</TouchableOpacity>
</View>
))}
</ScrollView>
</View>
</Modal>
}
解决方案
为模型创建一个单独的组件
import React, { Component } from "react";
import { Text, View, Modal, ScrollView, TouchableOpacity, Text } from "react-native";
export default class CustomModel extends Component {
render() {
const { dataForMaritalStatus } = this.props;
return (
<Modal
visible={this.state.isModalVisible}
onRequestClose={() => {
this.setState({ isModalVisible: false });
}}
animationType="fade"
transparent={true}
>
<View style={styles.modalContainer}>
<ScrollView showsVerticalScrollIndicator={true}>
{dataForMaritalStatus === null ? (
<Text style={styles.nodata}>No data Found </Text>
) : (
dataForMaritalStatus.map((status, id) => (
<View key={id}>
<TouchableOpacity
style={styles.opacity}
onPress={() => {
this._toggleModal();
}}
>
<Text style={styles.taskList}>{status.value}</Text>
</TouchableOpacity>
</View>
))
)}
</ScrollView>
</View>
</Modal>
);
}
}
不要忘记导出该组件。
现在将该组件导入您要使用的文件中
import Model from "./CustomModel";
并以这种方式使用它
<CustomModel dataForMaritalStatus=[] />
您可以像上面那样使用道具传递数据。
你可以在这里了解更多关于道具的信息:https ://facebook.github.io/react-native/docs/props
推荐阅读
- driver - 如何将wifi驱动程序添加到buildroot
- json - 如何在 Kotlin 中解析 JSON 数组
- facebook - (#200) 该应用程序未列入使用此 API 的白名单
- c++ - std::map::operator[] 比 std::map::insert 更高效?
- wordpress - 更改悬停菜单颜色
- css - 如何在图像上获得透明波浪边框效果
- sql - Laravel 查询不使用 where 子句作为日期
- javascript - 如果接受断开/连接 Web 套接字,WebSocket 不会重新连接
- bash - 如何在shell脚本的字符串中使用参数?
- java - Java javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] 消息:prolog 中不允许内容