ReactのsetStateで誤って順序付けられたレスポンスが使用されています。以前に選択したオプションの価値を私に与えてくれました。最初に何かを選択すると、それは空白になりますが、2番目の選択で前に選択したものが私に与えられます。ReactJSのsetStateと選択ドロップダウンの混乱
ので、最初のピック:「グリーン」の結果 セカンドピックを空にする:「赤」は結果
として私に「GRE」を与えるだろう、私は多分、私はそれを正しく結合しないよ、私は何かが欠けています知っています?
class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
typeValue: ''
}
this.changeHandler = this.changeHandler;
this.expressValue = this.expressValue.bind(this);
}
expressValue(e) {
this.setState({
typeValue : e.target.value
});
console.log('this type val state is: ' + this.state.typeValue);
}
render() {
return (
<div>
<TypeSelect changeHandler={this.expressValue} />
</div>
)
}
};
class TypeSelect extends React.Component {
constructor(props) {
super(props);
}
render() {
let options = {
'default': 'Choose a category',
'red': 'Red',
'blu': 'Blue',
'gre': 'Green',
}
return (
<select name="name_type" id="name_type" onChange={this.props.changeHandler}>
{
Object.keys(options).map(function(key){
return (
<option key={key} value={key}>{options[key]}</option>
)
})
}
</select>
)
}
};
'changeHandler'をバインドすると' Uncaught TypeError:undefinedの 'bind'プロパティを読み取ることができませんでした。 – SVY
関数を記述すると定義されます。したがって、あなたが 'changeHandler(e){console.log(e)};'を書いたならば、this.changeHandlerは未定義ではなくなります。 –
すみませんが、このコンポーネントは、この機能がまったく使用されていません。あなたはこの行を削除することができます、それは役に立たないです。 –