答案 0 :(得分:0)
将您的状态设置为开头的正确值:
http://codepen.io/anon/pen/qqPZva
state = {
value: this.props.value
};
ReactDOM.render(
<App value="2" />,
document.getElementById('root')
);
state = {
value: this.props.options[0].value
};
答案 1 :(得分:0)
<select>
标记的初始状态未正确设置。你需要设置:
class App extends React.Component {
state = {
value: 1
};
onChange = (event) => {
this.setState({value: event.target.value});
};
render() {
const {value} = this.state;
return <div>
<label>
<span>Select smth</span>
<select name="select" value={value} onChange={this.onChange}>
<option value="1">First</option>
<option value="2">Second</option>
</select>
</label>
<p>Value: {value}</p>
</div>;
}
}
由于value
的值未按照初始状态定义,因此选择菜单未给出选定的值,导致第一个选项呈现为浏览器选择的,这是drop的默认行为浏览器中的下拉菜单。
为了清晰起见,请查看此分叉CodePen。
答案 2 :(得分:0)
问题是你没有为你的状态变量&#34;值&#34;分配任何值。在console.log('value', value)
之后放置一个控制台const {value} = this.state;
,您将看到该值未定义。当您使用document.querySelector('[name="select"]').value
检查值时,它会为您提供select而不是状态变量的值,一旦您更改了下拉列表,状态变量会在此后一切正常后收到值。在更改下拉列表之前,状态变量值将不确定。
由于状态值未定义,因此选择渲染第一个元素。
为状态变量指定适当的值:
state = {
value: 1 or 2,
};