首页 > 解决方案 > 什么是差异状态和构造函数?

问题描述

我是反应原生的新手。我想问一下有什么区别

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
}

但它给了我一个错误

标签: react-native

解决方案


对于您的第一个问题,类字段提案只是语法糖(语法使写/读更好),但编译成相同的东西,因此两个版本本质上是等效的。我会坚持使用更容易编写的:

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>

这只是一个示例,但您可以在按下时将动态参数传递给该文本,这将设置父组件中的状态,因此您可以在父组件中使用您想要的任何数据。


推荐阅读