改变<选择>有状态React组件中的值
The right way to change a <select> value in a stateful React component
我正在有状态组件中呈现<select>
class StatefulContainer extends React.Component {
constructor(props) {
super(props);
this.state = {mode: 'all'};
}
render() {
return <div>
<form>
<select value={this.state.mode} onChange={this.handleModeSelection}>
<option value='all'>Show all</option>
<option value='one'>Just the first one</option>
</select>
</form>
</div>;
}
handleModeSelection({target: {value}}) {
this.setState({mode: value});
}
}
React.render(
<StatefulContainer/>,
document.getElementById('root')
);
并且不能弄清楚为什么浏览器用户不可能将所选择的选项更改为CCD_ 2。这是一个JS Bin。
正如Felix已经在评论中暗示的那样,当您为React组件使用ES6类时,您不能依赖React在正确的上下文中调用回调(如handleModeSelection
)(此处记录)。
有多种方法可以解决这个问题。一种常见的方法是在构造函数中绑定回调:
constructor(props) {
super(props);
this.state = {mode: 'all'};
this.handleModeSelection = this.handleModeSelection.bind(this);
}
相关文章:
- React重新渲染但未显示正确的组件
- React组件等待所需道具进行渲染
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React组件-设置页面标题
- 为react组件传递道具的最佳方式
- react组件中的绑定方法
- 如何在react js中移动第二个组件
- 如何在react路由器的组件中使用参数
- React+Redux性能优化与组件ShouldUpdate
- React-将jSON数据传递给子组件的子组件
- React js更改状态不会更新组件
- 加载服务器端渲染的React组件后执行脚本
- React ClickDrag子组件回调
- 如何在渲染函数中检查 react 中子组件的状态
- 以最封装的方式封装/封装ScalaJS react js组件(react stick)
- bind():您正在将一个组件方法绑定到该组件.React会自动为您执行此操作
- 如何将值从父组件传递到子组件(react)
- 将函数从HOC传递到组件(React, React native)
- 根据屏幕大小以不同的顺序呈现组件(React)