私はtype="range"
のフォームを持っています。フォームと同じ値を変更する3つのボタンを追加したいと思います。何らかの理由で、ボタンonClickイベントがレンダリング関数の呼び出し時に繰り返し呼び出されるようです。親コンポーネントからReactJS - レンダリング中にボタンonClickが呼び出される
handleSetCountdown(seconds) {
this.setState({
count: seconds
});
}
レンダリング:
これは私のコンポーネントである:
class Slider extends Component {
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
this.handleButton = this.handleButton.bind(this);
}
handleChange() {
this.props.onSetCountdown(parseInt(this.refs.seconds.value, 10));
}
handleButton(value) {
this.props.onSetCountdown(parseInt(value, 10));
}
render() {
return(
<div>
<form className={styles.ttSlider} ref="form">
<input max="480" min="60" name="slider" onChange={this.handleChange} ref="seconds" type="range" value={this.props.totalSeconds}/>
<button onClick={this.handleButton(60)}>1min</button>
<button onClick={this.handleButton(180)}>3min</button>
<button onClick={this.handleButton(300)}>5min</button>
</form>
</div>
)
}
}
Slider.propTypes = {
totalSeconds: React.PropTypes.number.isRequired,
onSetCountdown: React.PropTypes.func.isRequired
};
そして、これは親コンポーネントからである
<Slider totalSeconds={count} onSetCountdown={this.handleSetCountdown}/>
これは私のエラーです取得:
警告:SETSTATE(...):(など
render
または別のコンポーネントの コンストラクタ内など)は、既存の状態 遷移中に更新できません。レンダリング方法は、小道具の純粋な機能であり、 状態でなければなりません。コンストラクタの副作用は反パターンですが、 からcomponentWillMount
に移動できます。
これは、コンポーネントがまだレンダリングされている間にボタンonClickが呼び出されるようです。私は間違って何をしていますか?
可能な重複http://stackoverflow.com/questions/33846682/react-onclick-function-fires-on-で行を削除することができますレンダリング) – Swapnil