反应.js动态抓取对象,导致未定义

react.js dynamically grabbing object resulting in undefined

本文关键字:未定义 取对象 js 动态 抓取 反应      更新时间:2023-09-26

我正在学习反应.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
        // });
    },

如果更改此行:

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

自:

console.log(horoList[selectedHoro]);

您应该获得预期的输出。当您使用 horoList['selectedHoro'] 时,将使用文本字符串值 selectedHoro,因此它将horoList.selectedHoro 。当您使用 horoList[selectedHoro] 时,selectedHoro 是一个变量,它的值用于确定要解析的属性名称,以便解析为 horoList.aeries(当selectedHoro === aeries 时)。