javascript - 使用变量访问 props

标签 javascript reactjs react-redux

我正在尝试使用变量名称来访问 Prop 中的状态数据。这是我迄今为止尝试过的方法,但没有成功。

我想要在我的 Prop 中访问以下项目:

function mapStateToProps(state) {
    return {
        redCar: state.cars.redCar,
        blueCar: state.cars.blueCar
    }
}

红色和蓝色的汽车都是看起来像这样的物体:

{
   id: "red-car",
   year: 2017,
   make: "Infiniti",
   model: "QX 80"
}
{
   id: "blue-car",
   year: 2018,
   make: "RAM",
   model: "1500"
}

我正在尝试使用如下所示的变量访问制造商和模型,但该变量不起作用。我得到“未定义”:

handleChange(car, propertyName, value) {

   const currentValue = this.props[car][propertyName];
}

如何使用变量名称访问我的 props?

最佳答案

function mapStateToProps(state) {
    return {
        redCar: state.cars.redCar,
        blueCar: state.cars.blueCar
    }
}

在此函数中,您指定您的 Prop 上将有名为 redCarblueCar 的键。

handleChange(car, propertyName, value) {

   const currentValue = this.props["car"]["propertyName"];
}

此处您尝试使用括号表示法来访问该属性。仅当传入括号的字符串的拼写与键的名称完全相同时,括号表示法才有效,但在您的情况下并非如此。该属性可以是 redCarblueCar,但它不是 “car”

假设传入 handleChange 函数的 car 参数的值可以是 redCarblueCar > 你可以像这样重写你的代码,

handleChange(car, propertyName, value) {

   const currentValue = this.props[car][propertyName];
}

Bracket notation

关于javascript - 使用变量访问 props,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48735916/

相关文章:

javascript - angularjs - 动态函数返回

javascript - 来自 JSON 的求和值

Javascript 新手 : why can't new objects be created from initializers?

javascript - React Native - 构建应用程序

javascript - 我怎样才能只使用新设置的状态?

javascript - 制作一个不滚动 body 其余部分的可滚动div

javascript - 过滤并删除数组

javascript - 使用 redux saga 时出错,take(patternOrChannel) : argument 8 is not valid channel or a valid pattern

javascript - 映射数组项不会呈现所有元素

reactjs - 决定从哪个 redux 容器进行 API 调用