反应选择的上升错误
React-chosen raising error
我正在使用React selected(https://github.com/chenglou/react-chosen,jQuery Chosen插件的React包装器,https://harvesthq.github.io/chosen/)。我遇到多选元素的问题。
如果我这样做(在React.createClass
调用中):
loadDataFromServer: function() {
$.ajax({
url: '/api/users/',
dataType: 'json',
success: function(data) {
for (var i = 0; i < data.length; i++) {
var option = data[i];
var val = [option.id];
this.state.options.push(
<option key={i} value={val}>{option.name}</option>
);
}
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
getInitialState: function() {
return {data: [], options: []};
},
componentDidMount: function() {
this.loadDataFromServer();
},
render: function () {
return (
<form className="well base_well new_task_well" onSubmit={this.handleSubmit}>
<Chosen width="300px" data-placeholder="Select..." multiple>
{this.state.options}
</Chosen>
<button type="button" className="btn add_button" id="add_new_task_btn" type="submit">Add</button>
</form>
)
}
然后一切都很好(我基本上对API进行AJAX调用,并根据结果构建一个下拉选择列表,其中可能包含多个值)。
但是,为了减少代码大小,我想将选择列表构建为一个单独的组件,如下所述https://stackoverflow.com/a/25818571/2486678
我构建的组件是这样的:
var multipleSelect = React.createClass({
propTypes: {
url: React.PropTypes.string.isRequired
},
getInitialState: function() {
return {
options: []
}
},
componentDidMount: function() {
$.ajax({
url: this.props.url,
success: this.successHandler
})
},
successHandler: function(data) {
for (var i = 0; i < data.length; i++) {
var option = data[i];
this.state.options.push(
<option key={i} value={option.value}>{option.name}</option>
);
}
},
render: function() {
return this.transferPropsTo(
<Chosen width="300px" data-placeholder="Select..." multiple>
{this.state.options}
</Chosen>
)
}
});
然后,在父组件的render
方法中,我将multipleSelect
组件"插入"到一个表单中:
<multipleSelect url="/api/places"
value={this.state.place_childSelectValue} onChange={this.place_changeHandler}
/>
虽然这对于只有一个可能值的Chosen
元素(没有传递multiple
道具)来说很好,但如果我对具有多个可能的值的列表尝试这种方法,我会得到以下错误:
"警告:如果multiple
为true,则提供给<select>的value
道具必须是数组。请检查Chosen
的渲染方法。"
任何关于为什么会发生这种情况的想法>
您使用多选,因此value
道具必须是一个数组(对于multiselect)为place_childSelectValue
使用一个数组,或者将其放入单个元素数组:
[this.state.place_childSelectValue]
相关文章:
- 文档就绪提供了错误的选择器高度
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- JavaScript类列表选择器错误
- 当与Dojo验证一起使用时,Chrome 41密码保存会做出错误的选择
- 他们网站上的代码出现启动日期选择器错误
- HTML选择,在DOM中选择了正确的选项,但在firefox中显示了错误的项目
- jQuery选择器错误:无法识别的表达式
- 原型中漂亮的代码,如何省略'不是函数'空结果选择器上的错误
- 放置错误,选择2
- 隐藏错误消息“;未选择文件”;asp:fileUpload的文本
- 属性选择器不起作用(语法错误、无法识别的表达式)
- 在应用 jQuery.Selected 时,使用 jQuery.Validate 来验证选择字段时,暴露错误
- D3js,在 selectAll('rect') 中选择 rect 时未捕获的引用错误
- jquery数据表显示/隐藏列添加了错误的选择
- MVC4和日期选择器:“;0x800a01b6-JavaScript运行时错误:对象没有't支持属性或方法
- JQuery选择器理解错误
- 下拉列表中的选定索引在未选择任何值时引发错误
- jquery验证中生成的错误类的jquery选择器
- Java小程序——今天是不是一个错误的选择
- j查询错误选择器上的点击功能