Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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 在映射中未调用组件_Javascript_Reactjs_Loops_Iteration_Components - Fatal编程技术网

Javascript 在映射中未调用组件

Javascript 在映射中未调用组件,javascript,reactjs,loops,iteration,components,Javascript,Reactjs,Loops,Iteration,Components,下面是我的一段代码,其中未渲染内部组件,即MultiSelectAssetDropdown。console.log('comes here')没有出现,这显然意味着循环没有执行。但是,以前的console.log打印得很好。。所以我知道这个组件是渲染的。此外,循环执行后的组件渲染也非常好 <ul className="collapsible multiDropdownTag"> { console.log('field',this.state.configDefaultVal)}

下面是我的一段代码,其中未渲染内部组件,即
MultiSelectAssetDropdown
console.log('comes here')
没有出现,这显然意味着循环没有执行。但是,以前的
console.log
打印得很好。。所以我知道这个组件是渲染的。此外,循环执行后的组件渲染也非常好

<ul className="collapsible multiDropdownTag">
  { console.log('field',this.state.configDefaultVal)}
  { configDefaultVal.map(function (field) {
    console.log('comes here');
    return (
      <MultiSelectAssetDropdown placeholder="" icon=""
        label={field.defaultValues.DisplayName}
        value={field.selectedValues}
        disabled={this.state.disabledVal}
        selectedValues={field.selectedValues}
        className="multiselect"
        defaultValues={field.defaultValues.values}
        fieldValue="field1" id="field1"/>
    )}, this)
  }
  <MultiSelectAssetDropdown placeholder="" icon=""
    label="Sites"
    value={abc}
    siteId={this.state.details.siteId}
    disabled={this.state.disabledVal}
    selectedValues={abc}
    defaultValues={abc}
    fieldValue="sites" id="sites"/>
</ul>
此FinalFieldArray稍后设置为configDefaultVal状态

数组看起来像:[field1:array(0),field0:array(0)]

为什么?

这不是一个数组,正确的数组如下:

const array = [];
array.put([]);
array.put([]);
console.log(array) // => [Array(0), Array(0)]
更新您的
finalFieldArray
以使
map
工作:

const finalFieldsArray = [];
_.forEach(configVal, function(selField,key){
    _.forEach(configDefaultVal, function(defField, keys) {
        if(key == keys) {
            finalFieldsArray.push({
                key: key,
                value: {
                    selectedValues: selField,
                    defaultValues: defField
                }
            });
         }
     })
 })
数组看起来像:[field1:array(0),field0:array(0)]

为什么?

这不是一个数组,正确的数组如下:

const array = [];
array.put([]);
array.put([]);
console.log(array) // => [Array(0), Array(0)]
更新您的
finalFieldArray
以使
map
工作:

const finalFieldsArray = [];
_.forEach(configVal, function(selField,key){
    _.forEach(configDefaultVal, function(defField, keys) {
        if(key == keys) {
            finalFieldsArray.push({
                key: key,
                value: {
                    selectedValues: selField,
                    defaultValues: defField
                }
            });
         }
     })
 })

好。。。如果map函数不运行,可能是阵列中没有任何内容吗?@JohnRuddell抱歉,我将发布阵列,以及我在控制台日志中获得的阵列,为什么不发布它是什么?在代码中。而不是这些毫无意义的控制台logswell。。。如果map函数不运行,可能是阵列中没有任何内容吗?@JohnRuddell抱歉,我将发布阵列,以及我在控制台日志中获得的阵列,为什么不发布它是什么?在代码中。代替这些毫无意义的控制台。logsI编辑了我的问题,给出了我如何制作这个数组/对象的想法。我更新了我的aswer,但你应该关注对象而不是数组。这种方法工作得非常好,谢谢,顺便问一下,你能告诉我以前的方法有什么问题吗?JS数组只使用数值到索引值,所以数组[2]可以工作,但数组['key']不行。我编辑了我的问题,想知道我是如何制作这个数组/对象的。我更新了我的答案,但你应该关注对象而不是数组。这种方法非常好,谢谢,顺便问一句,你能告诉我以前的方法有什么问题吗?JS数组只使用数值来索引值,所以数组[2]可以工作,但数组['key']不能。