【问题标题】:Why I cant set value to my states? REAECT-NATIVE为什么我不能为我的状态设定价值?反应原生
【发布时间】:2020-08-09 08:01:31
【问题描述】:

我是 react-native 的新手,我通过导航将数据传递到我的 edit_note 屏幕,一旦我收到我将其设置为我的状态,但它不起作用,如果我打印它们,它会显示它们的值,但设置为我的状态不行,代码如下:

这里是 Notes 类,在导航功能中我将数据、数据和 note_number 传递给 Edit_note

render() {
    return (
        <>
        <View style = {this.styles.View}>
           <FlatList data = {this.props.data} renderItem = {({item}) => (<TouchableOpacity onPress = {() => this.props.navigation.navigate("Edit_note", {data: this.props.data, note_number: item.note_number})}><Text style = {this.styles.Text}>{item.title}</Text></TouchableOpacity>)} keyExtractor = {(item) => item.note_number.toString()}></FlatList>
        </View>
        </>
    );
}

在 Edit_note 中我收到它是这样的:

    class Edit_note extends Component {

    constructor() {
        super();
        this.state = {
            array_notes: [],
            note_number: "",
        }
    }
    componentDidMount() {
        const {params} = this.props.navigation.state;
        let x = params.note_number;
        this.setState({note_number: x});
        console.log(this.state.note_number);
    }
    render() {
        return (
           <Text></Text>
        );
    }
}

如果我打印x,它会打印note_number,但是将它设置为note_number,然后打印它,它什么都不显示,为什么?

【问题讨论】:

标签: javascript react-native android-studio


【解决方案1】:

您实际上设置了它,但您的 console.log() 在更改之前触发。

在状态改变后,组件会重新渲染,因此您可以尝试在屏幕上打印它;

render() {
    return (
       <Text>{this.state.note_number}</Text>
    );
}

【讨论】:

    【解决方案2】:

    setState 是异步的,这意味着状态确实发生了变化,但 setState 之后的 console.log 没有显示变化。

    您可以通过here了解更多信息。

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2020-10-02
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      相关资源
      最近更新 更多