2017-02-24 12 views
0

このカラーピッカーは一歩前進しますが、私はReact 15.4.2を使っています。 それ以降のバージョンで修正することは問題ですか? それが私のせいである場合、「保留状態」を習得する方法を教えてください。 ペンhttp://codepen.io/462960/pen/qrBLje コード:リア状態の更新ステップ

let Input = React.createClass({ 
    getInitialState(){ 
     return { 
     today_color: "#E5D380" 
    }; 
    }, 
    colorChange(e){ 
     this.setState({ 
      today_color: e.target.value 
     }) 
     document.querySelector('html').style.setProperty('--base', this.state.today_color); 
    }, 
    render(){ 
    return (<div> 
      <input className="today_color" onChange={this.colorChange} type="color" defaultValue={this.state.today_color}/> 
      </div>) 
    } 
}) 

答えて

2

あなたが抱えている問題は、SETSTATEコンポーネント再レンダリングを呼び出すと、このコードが再度呼び出されていない一度ということです。初めて

document.querySelector('html').style.setProperty('--base', this.state.today_color); 

そして、それが呼び出され、this.state.today_colorは依然として以前の値です。

何をすべきことは以下の通りです:

this.setState({ 
    today_color: e.target.value 
},() => document.querySelector('html').style.setProperty('--base', this.state.today_color)); 

これは、SETSTATEが行われた後、あなたの状態に正しい値を持った後のsetPropertyが呼び出されますを確認します。

編集:ここをクリックexampleです。

+0

回答が受け入れられ、問題が解決しました。@paqash。 –

+0

実際には、それを受け入れるためにチェックマークを押す必要があります:) – paqash

+0

私は@paqashをやったので、私は少しあなたの要求に驚いていて、ルールを考慮に入れて、そういう意味で私の感謝を示しました。上の2つの矢印のうちの1つが私のものです。 –

関連する問題