我可以避免将道具发送到 child 并返回吗?
Can I avoid sending props to child and back?
我有一个数组 objects:
const arrayOfObjects = [
{ name: 'Sushi', price: 10 },
{ name: 'Pizza',price: 5 }
];
我正在通过它们进行映射以生成 child 个组件。
const List = arrayOfObjects.map(item => (
<Child name={item.name} price={item.price} propFunc={parentFunc}></Child>
));
在 parent 组件的函数中,我需要数组中的值以及 child 组件的输入值。
const parentFunc = (arg1, arg2) => {
setItems(prev => {
return [...prev, { meal: arg1, amount: arg2 }];
});
};
在 Child 组件中我没有使用道具,只是将它们发回:
const Child = props => {
const childFunc = event => {
const var1 = event.target.value;
const var2 = props.name;
const var3 = props.price;
props.propFunc(var1, var2, var3);
};
};
这似乎是多余的。我可以访问数组中的值而不用来回发送它们吗?
我正在寻找一种不使用其他 React Hooks 且不改变数组的解决方案。
您可以通过为每个 child 创建一个函数来做到这一点,这些函数知道对应的项目:
const list = arrayOfObjects.map(item => (
<Child propFunc={(event) => parentFunc(event, item.name, item.price))} />
));
// ...
const Child = props => {
const childFunc = event => {
props.propFunc(event.target.value);
};
};
我有一个数组 objects:
const arrayOfObjects = [
{ name: 'Sushi', price: 10 },
{ name: 'Pizza',price: 5 }
];
我正在通过它们进行映射以生成 child 个组件。
const List = arrayOfObjects.map(item => (
<Child name={item.name} price={item.price} propFunc={parentFunc}></Child>
));
在 parent 组件的函数中,我需要数组中的值以及 child 组件的输入值。
const parentFunc = (arg1, arg2) => {
setItems(prev => {
return [...prev, { meal: arg1, amount: arg2 }];
});
};
在 Child 组件中我没有使用道具,只是将它们发回:
const Child = props => {
const childFunc = event => {
const var1 = event.target.value;
const var2 = props.name;
const var3 = props.price;
props.propFunc(var1, var2, var3);
};
};
这似乎是多余的。我可以访问数组中的值而不用来回发送它们吗?
我正在寻找一种不使用其他 React Hooks 且不改变数组的解决方案。
您可以通过为每个 child 创建一个函数来做到这一点,这些函数知道对应的项目:
const list = arrayOfObjects.map(item => (
<Child propFunc={(event) => parentFunc(event, item.name, item.price))} />
));
// ...
const Child = props => {
const childFunc = event => {
props.propFunc(event.target.value);
};
};