2017-07-13 8 views
0

初心者くさいをSETSTATE反応し、私はCtrlを押しながらパネル(Space.js)上ReactJSとReduxのを使用してがstandarのJavascript機能を自動的にReactJS上

<!-- language: lang-js --> 
import Oak from './Oak' 
class Space extends Component { 
    componentWillMount() { Newstate = Oak(oldState) } 
    componentWillUpdate() { } 

    render() { 
    return() 
    } 
} 

function mapStateToProps (state) { return {bigStateTree: state.bigTree } } 
export default connect(mapStateToProps)(Space) 
---------- 
//Oak.js 
export default function Oak (inputState = null) { 
dosome 3D dance 
return bigStateTree 
} 

使用していますのは、いくつかのコードを見てみましょう、キャンバス上のいくつかの3D(オーク。 js)。
質問:
Oak.jsから返された値からデータを取得したい場合は、状態を再構築する(Newstate = Oak(oldState)を再度呼び出します)、状態が3dベースの場合はループになります。状態の変化が3D変化したときに変化し、クリックしても変化しない。私は今、何をすべきか見当がつかないStackOverflowのNEVER mutate this.state directly

からの勧告に

ベース...あなたは初期状態を設定する必要がコンストラクタで

答えて

0

が初。 yourPropertyがしたいキーがある場合、次のようにこれを行うとはdefaultValueを選択するあなたの値である:componentWillMountで次に

this.state = { yourProperty: defaultValue } 

():

this.setState({ yourProperty: Oak(this.state.yourProperty) }) 

、最終的に状態にアクセスします()メソッドをレンダリング:

return (
    <div>{this.state.yourProperty}</div> 
    ); 

だけの時間、あなたはSETSTATEメソッドがコンストラクタであるなしにthis.stateする値を割り当てることができます。また、render()メソッドで状態を変更することはできません。

React Component Lifecycleを読んでおくと便利です。

+0

ありがとうございます@Andre、私はReactJsの文書を読んだ。現在、私は減速機を使用して、店を派遣しています。 (Newstate = Oak(oldState))を呼び出すことによって新しい状態が作成されるので、この関数は再び呼び出します。再度レンレンダーしてください。それは可能ですか、状態を再現する関数を呼び出すことによって間違った軌道に乗っています。 –

+0

私はreduxの使用を意味があるところに限定する傾向があります。あなたは、あなたが地方の状態にすべき何かを扱っているのか、それともコンポーネント間で共有すべきかどうか、自分自身に尋ねる必要があります。 –

+0

すべてのコンポーネントは、キャンバスを除いて、少数のコンポーネントだけStoreと共有する必要があります –

関連する問題