Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React JSX:迭代哈希并为每个键返回JSX元素_Javascript_Reactjs_React Jsx - Fatal编程技术网

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>);