2015-06-14 1 views
1

Я учусь response.js. У меня есть объектный литерал, и я пытаюсь динамически выбирать объект в объекте на основе того, что было выбрано из выбранного ввода. Однако я становлюсь неопределенным. Я пробовал как точку, так и скобки. Я успешно захватываю значение выбранного параметра и сохраняю его в переменной. Есть идеи?response.js динамически захватывающий объект, в результате которого не определено

Вот мой объект:

var horoList = { 
aries: { 
    title: "JerkFace", 
}, 
cancer: { 
    title: "Cancerous", 
}, 
gemini : { 
    title: "GoofBall" 
} 
} ; 

Вот некоторые из моих JSX в методе визуализации:

    <select name="pick-sign" onChange={this.handleChange}> 
         <option></option> 
         <option value="aries" >Aries</option> 
         <option value="cancer" >Cancer</option> 
         <option value="gemini" >Gemini</option> 
         <option value="taurus" >Taurus</option> 
        </select> 

А вот мой метод изменения ручки:

 handleChange: function(e) { 
     var selectedHoro = e.target.value; 
     console.log(selectedHoro); //outputs: aries 
     console.log(horoList); //outputs: Object {aries: Object, cancer: Object, gemini: Object} 
     console.log(horoList.aries); //ouputs: Object {title: "JerkFace"} 
     console.log(horoList['selectedHoro']); //outputs: undefined 
     // this.setState({ 
     // horos: horoList.selectedHoro 
     // }); 
    }, 

ответ

3

Если вы можете изменить эту строку:

console.log(horoList['selectedHoro']); //outputs: undefined

To:

console.log(horoList[selectedHoro]);

Вы должны получить ожидаемый результат. Когда вы используете horoList['selectedHoro'], используется буквальное строковое значение selectedHoro, поэтому оно будет horoList.selectedHoro. Когда вы используете horoList[selectedHoro], selectedHoro - это переменная, и ее значение используется для определения имени свойства, которое вы хотите разрешить, чтобы оно разрешилось до horoList.aeries (когда selectedHoro === aeries).

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