react-native - 什么是差异状态和构造函数?
问题描述
我是反应原生的新手。我想问一下有什么区别
state = {
}
和
constructor(props){
super(props)
this.state = ''
}
我将数据从父类发送到子类,例如 <child value={} />
但我无法将数据从孩子发送给父母?我试着这样发送:
<Text onPress={() => this.props.navigation.navigate('Parent',{deneme: 'abc'})} ></Text>
在父类中,我有
state = {
deneme : this.props.navigation.params.deneme
}
但它给了我一个错误
解决方案
对于您的第一个问题,类字段提案只是语法糖(语法使写/读更好),但编译成相同的东西,因此两个版本本质上是等效的。我会坚持使用更容易编写的:
state = {
}
对于您的第二个问题,要将数据“发送”到您的父组件,最常用的方法是让您的父组件也将一个方法作为道具传递,当子组件调用该方法时,它将父组件中的状态设置为将“数据”存储在父组件中。
例如:
因此,在您的父组件中,您应该初始化该 state 属性,该属性将保存您希望子组件发送的“数据”:
state = {
myData: '' // default it to string, array, object, whatever your
// eventual data type would be
}
然后设置一个方法并将其传递给您的子组件,该方法可以设置此 state 属性的状态:
// parent include this method
handleSetData = (myData) => {
this.setState({ myData: myData });
}
// inside render and your child component pass the method to it
<ChildComponent setData = {this.handleSetData} />
// Child Component, inside your button
<Text onPress={('Some data') => this.props.setData('Some data'})}></Text>
这只是一个示例,但您可以在按下时将动态参数传递给该文本,这将设置父组件中的状态,因此您可以在父组件中使用您想要的任何数据。
推荐阅读
- angular - Angular Material 2更改根后代复选框颜色
- python - 如何将数字与输入分开以添加它们?
- xml - 覆盖视图:website_sign/static/src/xml/website_sign_common.xml
- typescript - WARN [middleware:karma]: 文件类型无效,默认为 js。ts
- c - Why does running C code in Vim skip scanf()?
- django - django-rest-swagger==2.1.1 查询参数
- sql - SQL Oracle XML 空标签和属性
- rabbitmq - 如何恢复 RabbitMQ 队列?
- swift - 如果所有文本字段为空,如何返回上一个文本字段?
- python-3.x - “PDF 文件尚未解密”问题仍然存在于 PyPDF2