reactjs - 如何从组件 B(功能组件)中的事件处理程序呈现组件 A?
问题描述
我正在通过一个简单的食物日志应用程序学习钩子。我有一个带有按钮列表的页面(每个按钮都是一种食物)。当用户单击一个按钮时,该食物会显示在页面顶部,其中包含所吃的卡路里。我使用两个函数组件:Ate 和 Food,并将食物列表和 ate 列表都保存在 localStorage 的数组中。它可以工作,但需要刷新页面。如何使用钩子从 Food 组件中的 onClick 事件处理程序呈现 Ate 组件?
这是一个代码示例:
const Home = props => {
const ate = readAte()
const foods = readFood()
return (
<div>
<Ate ate={ate} />
<Food food={foods} />
</div>
)
}
const getAte = (x, i) => {
return <li key={i}>{x.name}</li>
}
const Ate = props => {
const { ate } = props
return (
<div>
<h2>I Ate</h2>
{ate.map(getAte)}
</div>
)
}
const getFood = (food, i) => {
return <FoodItem key={i} data={JSON.stringify(food)} name={food.name} />
}
const Food = props => {
const { food } = props
return (
<div>
<h2>Choose from the list</h2>
<ul>{food.map(getFood)}</ul>
</div>
)
}
const handleFoodClick = event => {
const ate = JSON.parse(event.target.getAttribute('data'))
saveAte(ate)
}
const FoodItem = props => {
const { name, data } = props
return (
<li>
<button onClick={handleFoodClick} data={data}>
{name}
</button>
</li>
)
}
这是其余的代码。
谢谢!
解决方案
推荐阅读
- dart - 从函数返回类
- javascript - ReactJS 在组件之间传递数据(搜索栏)
- r - 带有ggplot2的R中的散点图:
- javascript - 在 heroku 上托管应用程序后无法连接到 SQL Server
- javascript - 使用 try 在异步函数中设置超时,并且 catch 不会捕获错误
- python - 如何在 Keras 中创建自定义回调?
- python - 替换字符串列表中的函数
- python - Python 等效于 Scala 选项以避免 NoneType 没有属性错误?
- javascript - 在 HTML JavaScript 中将文本添加到输出
- c# - 如何在 Unity 3D 中拥有一个留在场景中且不会重新创建的对象