Reactjs setState问题

时间:2017-06-09 12:27:48

标签: reactjs

在做出反应时,我将数据存储在状态中。问题是我能够存储和读取函数中的状态。但是如果我尝试在render()方法中读取它,我就无法读取状态。以下是代码:

import Opt from './GenerateData.jsx';

constructor(props) {
    this.state = {
        options : ""
    }

    this.handleOptions = this.handleOptions.bind(this);
} 

handleOptions(params) {
    this.setState({
        options: params
    });

    // here it will print the state value
    console.log(this.state.options)
}

//但它不会在这里打印..

render() {
    return (

        <Opt handleOptions={this.handleOptions.bind(this)} />
        ...
        ...
        <FilterOpts name="optionSelection" data={this.state.options} />
    )
}

在GenerateData.jsx

class GenerateData extends React.Component {
    componentDidMount() {
        var d = [1,2,3,4];
        this.props.handleOptions(d);
    }

    render() {
        return (
            <div></div>
        )
    }
}

1 个答案:

答案 0 :(得分:-1)

React setState()是异步的。它不会立即改变this.state,但会创建一个挂起状态转换。

您可以尝试使用此代码记录更新后的状态。

handleOptions(params) {
    this.setState({
            options: params
        }, () => {console.log(this.state.options);}
    );     
}