尝试使用反应中的 onclick 事件更改 table 中项目的值
Trying to change the value of an item in a table using onclick event in react
我需要为 table 中的每个项目添加 clickhandler 事件,这样当我点击 table 中的任何项目时,数量项目应生成介于 0 之间的随机数20.This 是我试过的代码,所以 far.Product 有 {name,price,quantity}。
import React from 'react';
function ProductRow({ product }) {
function handleClick(){
var min=0;
var max=20;
product.quantity=min + (Math.random() * (max-min));
}
const getColor = (quantity) => {
if (quantity === 0) return 'red';
if (quantity < 10) return 'blue';
return '';
};
return (
<tr style={{ color: getColor(product.quantity) }} onClick={handleClick} >
<td >{product.name}</td>
<td >{product.price}</td>
<td >{product.quantity}</td>
</tr>
);
}
export default ProductRow;
将数量放入状态,然后在handleClick
中,您可以设置该状态:
function ProductRow({ product }) {
const [quantity, setQuantity] = useState(product.quantity);
function handleClick() {
var min = 0;
var max = 20;
setQuantity(min + (Math.random() * (max - min)));
}
const getColor = (quantity) => {
if (quantity === 0) return 'red';
if (quantity < 10) return 'blue';
return '';
};
return (
<tr style={{ color: getColor(quantity) }} onClick={handleClick} >
<td >{product.name}</td>
<td >{product.price}</td>
<td >{quantity}</td>
</tr>
);
}
您应该为该单元格的值维护一个本地状态变量qty
第一次使用useEffect hook设置初始值
useEffect = ( () => {
setQty(product.quantity)
} ,[])
然后在 onClick 处理程序中执行相同的操作
并在 table 单元格中显示结果。
这里是完整的代码
import React from 'react';
function ProductRow({ product }) {
const [qty , setQty] = useState(0);
useEffect = ( () => {
setQty(product.quantity)
} ,[])
function handleClick(){
var min=0;
var max=20;
setQty(min + (Math.random() * (max-min)));
}
const getColor = (quantity) => {
if (quantity === 0) return 'red';
if (quantity < 10) return 'blue';
return '';
};
return (
<tr style={{ color: getColor(product.quantity) }} onClick={handleClick} >
<td >{product.name}</td>
<td >{product.price}</td>
<td >{qty}</td>
</tr>
);
}
export default ProductRow;
我需要为 table 中的每个项目添加 clickhandler 事件,这样当我点击 table 中的任何项目时,数量项目应生成介于 0 之间的随机数20.This 是我试过的代码,所以 far.Product 有 {name,price,quantity}。
import React from 'react';
function ProductRow({ product }) {
function handleClick(){
var min=0;
var max=20;
product.quantity=min + (Math.random() * (max-min));
}
const getColor = (quantity) => {
if (quantity === 0) return 'red';
if (quantity < 10) return 'blue';
return '';
};
return (
<tr style={{ color: getColor(product.quantity) }} onClick={handleClick} >
<td >{product.name}</td>
<td >{product.price}</td>
<td >{product.quantity}</td>
</tr>
);
}
export default ProductRow;
将数量放入状态,然后在handleClick
中,您可以设置该状态:
function ProductRow({ product }) {
const [quantity, setQuantity] = useState(product.quantity);
function handleClick() {
var min = 0;
var max = 20;
setQuantity(min + (Math.random() * (max - min)));
}
const getColor = (quantity) => {
if (quantity === 0) return 'red';
if (quantity < 10) return 'blue';
return '';
};
return (
<tr style={{ color: getColor(quantity) }} onClick={handleClick} >
<td >{product.name}</td>
<td >{product.price}</td>
<td >{quantity}</td>
</tr>
);
}
您应该为该单元格的值维护一个本地状态变量qty
第一次使用useEffect hook设置初始值
useEffect = ( () => {
setQty(product.quantity)
} ,[])
然后在 onClick 处理程序中执行相同的操作
并在 table 单元格中显示结果。
这里是完整的代码
import React from 'react';
function ProductRow({ product }) {
const [qty , setQty] = useState(0);
useEffect = ( () => {
setQty(product.quantity)
} ,[])
function handleClick(){
var min=0;
var max=20;
setQty(min + (Math.random() * (max-min)));
}
const getColor = (quantity) => {
if (quantity === 0) return 'red';
if (quantity < 10) return 'blue';
return '';
};
return (
<tr style={{ color: getColor(product.quantity) }} onClick={handleClick} >
<td >{product.name}</td>
<td >{product.price}</td>
<td >{qty}</td>
</tr>
);
}
export default ProductRow;