首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JavaScript + React,如何让字符串进行内联求值?

使用JavaScript + React,如何让字符串进行内联求值?
EN

Stack Overflow用户
提问于 2018-04-15 04:47:59
回答 2查看 60关注 0票数 1

下面的代码在我的函数中效果很好:

代码语言:javascript
复制
console.log(theme.colors.blues[1]);

我试着让最后一部分动态化,就像这样:

代码语言:javascript
复制
const getColor = (theme, passedColorProp) => {
  console.log(theme.colors.[passedColorProp]);
};

getColor("blues[1]");

这当前的错误是:

模块构建失败: SyntaxError:意外令牌(15:27)**

我怎么才能让它工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-15 04:49:59

你就快到了,你可以完全按照你所做的那样动态地访问一个属性,除非你不需要额外的点。

代码语言:javascript
复制
const getColor = (theme, passedColorProp) => {
  console.log(theme.colors[passedColorProp]);
};

请注意,这适用于单个属性,但您不能像在示例中那样嵌套它,因为您需要使用两个不同的变量:

代码语言:javascript
复制
const getColor = (theme, passedColorProp, id) => {
  console.log(theme.colors[passedColorProp][id]);
};

const theme = { colors: { blues: ['something', 'something else'] } };

getColor(theme, 'blues', 1); // 'something else'
票数 3
EN

Stack Overflow用户

发布于 2018-04-15 04:53:47

使用带有正则表达式的String.match()提取键,然后使用Array.reduce()迭代它们以获得值:

代码语言:javascript
复制
const theme = {
  colors: {
    blues: ['blue0', 'blue1']
  }
};

const getColor = (theme, passedColorProp) => {
  const keys = passedColorProp.match(/[^\[\].]+/g); // match a sequence of everything but [ ] or .
  
  return keys.reduce((r, k) => r[k], theme);
};

console.log(getColor(theme, 'colors.blues[1]'));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49836056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档