2017-06-09 11 views
-1

反応して、私は状態のデータを保管しています。問題は、私が関数内で状態を格納し読み込むことができることです。しかし、render()メソッドで読み込もうとすると、状態を読み取ることができません。ここでは以下のコードです:Reactjs setStateの問題

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> 
     ) 
    } 
} 
+0

理想的には、これは反対でなければなりません。 –

+0

コンストラクタで状態を指定すると印刷されますか? – quickshiftin

+0

これはコンストラクタ – B77

答えて

-1

は(SETSTATEに反応)であります非同期。直ちにthis.stateを変更するのではなく、保留中の状態遷移を作成します。

このコードを試して、更新された状態をログに記録することができます。

handleOptions(params) { 
    this.setState({ 
      options: params 
     },() => {console.log(this.state.options);} 
    );  
} 
関連する問題