如何在React中通过动态变量获取Redux对象的examples_前缀属性?
正确实现方式
你需要使用方括号语法动态拼接属性名,这是JavaScript中访问对象动态属性的标准写法:
// 简洁写法 const retrieveVariations = useSelector(state => state.variationsData[`examples_${variable}`] );
或者拆分步骤,可读性更强:
const retrieveVariations = useSelector(state => { // 拼接出目标属性的完整名称 const targetProperty = `examples_${variable}`; // 通过方括号访问动态属性 return state.variationsData[targetProperty]; });
补充说明
注意examples_production的值是JSON字符串,如果需要在表单中直接使用数组数据,还需要先解析:
const retrieveVariations = useSelector(state => { const targetProperty = `examples_${variable}`; const rawValue = state.variationsData[targetProperty]; // 仅当值为字符串时解析,兼容null的情况 return typeof rawValue === 'string' ? JSON.parse(rawValue) : rawValue; });
为什么之前的写法无效?
state.variationsData.examples_{variable}:JavaScript点语法仅支持固定属性名,不能直接插入变量,属于语法错误。state.variationsData.examples_+variable:这里会先读取不存在的examples_属性(得到undefined),再和variable做字符串拼接,结果完全不符合预期。state.variationsData.[examples_+variable]:多了不必要的点,且examples_未加引号会被当作未定义变量,直接触发语法错误。
内容的提问来源于stack exchange,提问作者ddaudiosolutions
相关产品推荐
相关产品推荐

