Компонент не вызывается в отображении ReactJS - PullRequest
0 голосов
/ 23 октября 2018

Ниже приведен мой фрагмент кода, где внутренний компонент, т.е. 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>

Может кто-нибудь, пожалуйста, укажите мне правильное направление здесь?Массив выглядит следующим образом: [field1: Array(0), field0: Array(0)] Однако, когда я делаю .length, он дает 0

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

Этот finalFieldsArray позже устанавливается в состояние как configDefaultVal.

1 Ответ

0 голосов
/ 23 октября 2018

Массив выглядит следующим образом: [field1: Array (0), field0: Array (0)]

Почему?

const array = [];
array['field1'] = [];
array['field0'] = [];
console.log(array) // => [field1: Array(0), field0: Array(0)]

Это я немассив, правильный массив, например:

const array = [];
array.put([]);
array.put([]);
console.log(array) // => [Array(0), Array(0)]

Обновите finalFieldsArray, чтобы 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
                }
            });
         }
     })
 })
...