javascript - react 选择值为 null

标签 javascript reactjs

我有以下代码作为我的 React 组件的一部分:

<select
  className="input form-control"
  onChange={this.onUserChanged}
  value={task.user_id}>
  <option value=''></option>
  {this.renderUserOptions()}
</select>

当第一次呈现组件时 task.user_id 为 null 时,select 会正确显示带有值为 '' 的空选项。 .

但是,如果我将值从具有值的值更改回默认选项,服务器端会正确更新,任务对象返回 null对于 task.user_id但选择不会更改为默认值。

我应该怎么做才能处理这种情况?


最佳答案

当为你的select组件设置值时,你必须将null转换为'';当从您的组件接收值时,您必须将 '' 转换为 null。一个简单的例子:

class Example extends React.Component {
    constructor(props) {
        super(props);
        this.state = { selected: null };
    }

    render() {
        return <div>
            <select
                className="input form-control"
                onChange={e => this.setState({ selected: e.target.value || null })}
                value={this.state.selected || ''}>
                <option value=''></option>
                <option value='1'>cook dinner</option>
                <option value='2'>do dishes</option>
                <option value='3'>walk dog</option>
            </select>
            <input type='button' onClick={() => this.setState({ selected: null })} value='Reset' />
        </div>
    }
}

假设您的 ID 始终是真实的,这会起作用:e.target.value || null 会将选中的空字符串转换为null;和 this.state.selected || '' 会将您的 null 状态转换为空字符串。如果您的 ID 可能是假的(例如数字 0),您将需要更可靠的转换。

See Fiddle here .

关于javascript - react 选择值为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36187522/

相关文章:

Javascript 全局对象在函数中返回未定义

javascript - 在iframe的父窗口中触发事件

javascript - React Native - 如何测量 ScrollView 中内容的大小?

javascript - 如何在 draft-js 编辑器的搜索结果中聚焦

javascript - 即使我正在使用 react update add on,react setState 也不会改变状态

javascript - setInterval添加多个svg元素,x位置相对性

javascript - 如何知道网络是否已(断开)连接?

javascript - 我怎么能使用 webpack split app and dependency in to different js files

javascript - 我如何在 React 中淡入变化的值?

javascript - RTMP 广播(Youtube API),用于在 YouTube 上进行直播,显示空白屏幕