使用(嵌套的)道具值来引用另一个道具

Use (nested) prop value to reference another prop

我正在尝试使用嵌套的道具值,然后使用该值动态获取另一个道具。这适用于浅(第一级)道具,但当道具被嵌套时它会失败。

function DynamicContent(props) {
  const content = props.data[props.children]
  return <span>{content}</span>
}

作品(returns“我的Post标题):

{
  children: ["postTitle"],
  data: {
    postTitle: "My Post Title",
    category: {
      title: "The Category Title",
    }
  }
}

不起作用(returns 未定义,预计 "The Category Title"):

{
  children: ["category.title"],
  data: {
    postTitle: "My Post Title",
    category: {
      title: "The Category Title",
    }
  }
}

你不能这样做,但一个简单的解决方案是做这样的事情:

children: ["category", "title"]

在你的函数中:

const content = props.data[props.children[0]][props.children[1]]

我想,这不是更好的解决方案,但你有一个实现你想要的想法,也许你可以分成两个函数,一个用于访问 属性 内部对象,第二个用于访问子子对象对象

你做得很好,你做得对。你只需要一个简单的调整。 使用 eval 您可以根据需要评估嵌套的数量。

const path = 'props.data' + props.children;
const content = eval(path);