Javascript React JSX:迭代哈希并为每个键返回JSX元素
我试图遍历散列中的所有键,但循环没有返回任何输出Javascript React JSX:迭代哈希并为每个键返回JSX元素,javascript,reactjs,react-jsx,Javascript,Reactjs,React Jsx,我试图遍历散列中的所有键,但循环没有返回任何输出console.log()按预期输出。知道为什么JSX没有正确返回和输出吗 var DynamicForm = React.createClass({ getInitialState: function() { var items = {}; items[1] = { name: '', populate_at: '', same_as: '', autocomplete_from: '',
console.log()
按预期输出。知道为什么JSX没有正确返回和输出吗
var DynamicForm = React.createClass({
getInitialState: function() {
var items = {};
items[1] = { name: '', populate_at: '', same_as: '',
autocomplete_from: '', title: '' };
items[2] = { name: '', populate_at: '', same_as: '',
autocomplete_from: '', title: '' };
return { items };
},
render: function() {
return (
<div>
// {this.state.items.map(function(object, i){
// ^ This worked previously when items was an array.
{ Object.keys(this.state.items).forEach(function (key) {
console.log('key: ', key); // Returns key: 1 and key: 2
return (
<div>
<FieldName/>
<PopulateAtCheckboxes populate_at={data.populate_at} />
</div>
);
}, this)}
<button onClick={this.newFieldEntry}>Create a new field</button>
<button onClick={this.saveAndContinue}>Save and Continue</button>
</div>
);
}
var DynamicForm=React.createClass({
getInitialState:函数(){
变量项={};
项[1]={name:'',填充位置:'',与:''相同,
自动完成来自以下位置的内容:'',标题:'};
项[2]={name:'',填充位置:'',与:''相同,
自动完成来自以下位置的内容:'',标题:'};
返回{items};
},
render:function(){
返回(
//{this.state.items.map(函数(对象,i){
//^以前,当项目是数组时,此操作有效。
{Object.keys(this.state.items).forEach(函数(键){
log('key:',key);//返回key:1和key:2
返回(
);
},这个)}
创建一个新字段
保存并继续
);
}
Array.prototype.forEach()
Object.keys(this.state.items).map(function (key) {
var item = this.state.items[key]
// ...
捷径是:
Object.values(this.state.items).map({
name,
populate_at,
same_as,
autocomplete_from,
title
} => <div key={name}>
<FieldName/>
<PopulateAtCheckboxes populate_at={data.populate_at} />
</div>);
Object.values(this.state.items).map({
名称
在,
同,
从中自动完成,
标题
} =>
);
是的,我用map
替换了forEach
,效果很好。谢谢!:-)var item=this.state.item[key]。这和你想的不一样,需要使用var=this,this.state.item[key]this
将作为第二个参数传递,该参数在调用函数时设置this
的适当值。如果对象引用的道具在第一次渲染时为“未定义”或“null”,则会出现错误。使用“object.keys(this.props.items |{}).map(…)解决它。哇!谢谢@MadeInMoon,我不知道如何在我的mapStateToProps中解决这个问题,当它抛出一个错误“null不是一个对象”(评估“object.keys”再次感谢:)
Object.values(this.state.items).map({
name,
populate_at,
same_as,
autocomplete_from,
title
} => <div key={name}>
<FieldName/>
<PopulateAtCheckboxes populate_at={data.populate_at} />
</div>);