2017-02-04 6 views
2

Я пытаюсь создать динамический блок выбора. Я передаю исходные данные строки и имя отображаемого имени клавиши. Я не могу объединить объект данных с строковым ключом или отображаемым именем. Благодаря!Продвижение реквизита, чтобы умеренный литерал на карте

const { rowSourceData, rowSourceKey, rowSourceDisplay } = this.props; 
const rowSource = rowSourceData 
    .map(data => {   
     return (
     <option key={data.`${rowSourceKey}`}> {data.`${rowSourceDisplay}`}</option>    
    )  
    }) 

ответ

2

Написать это следующим образом:

const { rowSourceData, rowSourceKey, rowSourceDisplay } = this.props; 
const rowSource = rowSourceData 
    .map((data,i) => {   
     return (
      <option key={i/*data[rowSourceKey]*/}> {data[rowSourceDisplay]}</option>    
     )  
    }) 

Для примера:

obj = {a:1,b:2,c:3,d:4}; 
 
temp = 'c'; 
 
console.log(obj[temp]); // print 3;

+0

Спасибо! Должен ли я не получить «Предупреждение: каждый ребенок в массиве или итераторе должен иметь уникальную« подсказку »ключа.»? Я не получаю его, когда я жестко кодирую имя ключа. – James

+0

означает, что значения ключа ура не уникальны, чтобы обрабатывать этот случай уникального ключа, вы можете использовать индекс элемента, использовать любую переменную в качестве индекса элемента, а затем передать это как ключ. это не вызовет никакой ошибки :) –

+0

оцените вашу помощь! Я потратил около 3 часов на это :) – James

0

Решимость его, как

const rowSource = rowSourceData 
    .map(data => {   
     return (
     <option key={data[rowSourceKey]}> {data[rowSourceDisplay]}</option>    
    )  
    }) 

Однако, поскольку вы используете тот же ключ, вы получите предупреждение о дублировании ключа. Ваш ключ должен быть уникальным. У вас может быть указатель на ключ, например,

const rowSource = rowSourceData 
    .map((data, index) => {   
     return (
     <option key={index}> {data[rowSourceDisplay]}</option>    
    )  
    }) 
+0

Это приведет к чему-то вроде '

+0

Спасибо за помощь. Сначала я увидел другой ответ. – James

+0

Нет проблем. Возможно, я немного опоздал с ответом –

 Смежные вопросы

  • Нет связанных вопросов^_^