reactjs - React - 基于数组的渲染组件 - 如何在 mongoDB 中包含来自父级的函数?
问题描述
我想在我的 MongoDB 中存储一个分配给父函数的 props 值,以便我可以基于该数组渲染组件,并且每个组件都有自己的函数。
我有一个像这样的 JSON,我从我的 mongoDB 获得然后存储在this.state.people
{
"_id": "60496f4e6478022895c0b1da",
"name": "Peter",
"imagepath": "./img/Peter.png",
},
{
"_id": "60496f4e6478022895c0b1da",
"name": "Tim",
"imagepath": "./img/Tim.png",
}
我将状态传递给子组件并使用以下内容渲染组件:
{props.people.map( result =>
<PeopleComponent
key={result._id}
name={result.name}
imagepath={result.imagepath}
/>
)}
到目前为止效果很好。
现在我无法解决的问题:在我的父组件 App.js 中,我有函数doSomethingWithPeter()
和doSomethingWithTim()
. 如何将这些函数包含在内.map
,以便在单击按钮时实际调用父函数?
我尝试在数据库中添加一个附加条目,添加:
"_id": "60496f4e6478022895c0b1da",
"name": "Tim",
"imagepath": "./img/Tim.png",
"function": "props.doSomethingWithTim()"
然后将其映射为:
{props.people.map( result =>
<PeopleComponent
key={result._id}
name={result.name}
imagepath={result.imagepath}
function={result.function}
/>)}
但是后来我Expected an assignment or function call and instead saw an expression
通过道具传递了函数,并且还尝试将它绑定到 App.js 中,this.props.doSomethingWithTim = this.props.doSomethingWithTim.bind(this)
但不知道我还能尝试什么。提前致谢
解决方案
您可能应该找到另一种方法来做到这一点,也许通过存储一个简单的值允许您选择正确的函数来调用?
也许您可以尝试使用 eval,但它是一个非常不安全的功能? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval
function ParentPeopleComponent({people, doSomeStuff1, doSomeStuff2}) {
return people.map(p =>
<PeopleComponent
// p={function: 'doSomeStuff1'}
onSomething={() => eval(p.function)()}
/>
)
}
推荐阅读
- python-3.x - python中的class_variable和instance_variable
- xcode - 使用 Xcode 时如何通过终端执行我的代码?
- matlab - 使用 intlinprog 实现目标函数
- python - python(pycaita) 中的“激活终端节点”和“add_existing_component”不起作用
- python - 如何在带有 venv 的 Docker 映像中安装 tensorflow?
- python-3.x - 如何将有效负载转换为人类可重复的形式
- google-apps-script - 未找到应用程序脚本 vlookup?
- r - 错误:“>”中出现意外的“>”。尝试创建数据框
- autohotkey - 在 Windows 10 上激活始终在线计算器的 AHK 脚本
- druid - 授予对超集中仪表板的只读访问权限