我正在尝试做的事情:我需要价格 * 数量 = 总量。我有一张表,价格为一,数量为一,总数为一。数量是一个计数器,需要有自己的状态,因为行将添加更多的计数器。但是我需要父表中的那个值,所以我可以用它来计算总数。
通常我会将计数器值放在父级中,但如果我这样做,当我更改一个计数器时,它们都会改变。那么我还能如何将值传递回父级呢?或者我在这里还有什么其他选择。
//parent
const memoData = useMemo(() => {
return productList.map((product) => (
<tr key={product.productNumber} className='productTable__row'>
<td>
<input
placeholder='Product name'
className='productTable__input productTable__input_product'
defaultValue={product.productName}
/>
</td>
<td>
<input
placeholder='Id'
className='productTable__input productTable__input_id'
disabled
defaultValue={product.productNumber}
/>
</td>
<td>
<input
placeholder='Price'
className='productTable__input productTable__input_price'
defaultValue={product.price}
/>
</td>
<td>
<Input prouct={product} />
</td>
<td>
<input
placeholder='Total'
className='productTable__input productTable__input_price'
defaultValue={? * product.price}
/>
</td>
<td>
<button
className='productTable__btn_close'
onClick={() => onProductDelete(product)}
>
<RiCloseFill fill='red' size='30px' />
</button>
</td>
</tr>
));
}, [onProductDelete, currentProduct, productList]);
//child
function Input() {
const [counter, setCounter] = useState(1);
const addOneClick = () => {
setCounter(counter + 1);
};
const minusOneClick = () => {
if (counter > 0) {
setCounter(counter - 1);
}
};
return (
<div style={{ width: '88px' }}>
<button
className='productTable__btn_minus'
style={{ borderRight: 'none' }}
onClick={minusOneClick}
>
<FaMinus fill='var(--color-primary-blue)' size='14px' />
</button>
<input
placeholder='0'
className='productTable__input productTable__input_quantity'
// defaultValue={0}
value={counter}
/>
<button
className='productTable__btn_plus'
style={{ borderLeft: 'none' }}
onClick={addOneClick}
>
<FaPlus fill='var(--color-primary-blue)' size='14px' />
</button>
</div>
);
}