[英]How to set value to const in react
const CreateNewTab = () => {
const priceMap = {};
retrun(
<Form>
<Form.Item
label="Price Map"
name="priceMap"
rules={[{ required: true, message: "Please input Prices!"}]}>
{selectedProducts.flatMap(productId => products
.filter(product => product.id === productId)
.map(product => (
<Input.Group compact>
<Form.Item label={product.productName + " : "} />
{product.priceList.map((priceObj) => (
<Form.Item
label={priceObj.type}
key={priceObj.priceId}>
<Input defaultValue={priceObj.price}
rules={[{ required: true, message: "Please input price!" }]}
onChange={(changedValues) => { priceMap[priceObj.id] = changedValues[Object.keys(changedValues)[0]]; console.log(priceMap) }} />
</Form.Item>
))}
</Input.Group>
))
)}
</Form.Item>
</Form>
)
I want to track the priceMap for example例如,我想跟踪 priceMap
"priceMap": {
"3": 2,
"4": 5,
"10": 2,
"11": 5,
"12": 2,
"13": 5
}
However, the error says Assignment to constant variable.但是,错误说分配给常量变量。
I have tried const [priceMap, setpriceMap] = useState([]);我试过 const [priceMap, setpriceMap] = useState([]); but it only sets single value to priceMap.
但它只为 priceMap 设置单个值。
Instead, I want to create priceMap as key value json object.相反,我想创建 priceMap 作为键值 json 对象。
setState
is definitely the right thing to do. setState
绝对是正确的做法。 That is the React hooks way of having data that, when it changes, causes a re-render.这就是 React hooks 获取数据的方式,当数据发生变化时,会导致重新渲染。
I have tried const [priceMap, setpriceMap] = useState([]);
我试过 const [priceMap, setpriceMap] = useState([]); but it only sets single value to priceMap.
但它只为 priceMap 设置单个值。
Why are you setting priceMap
to an Array
when you want it to be an Object
?当您希望它是一个
Object
时,为什么priceMap
设置为一个Array
? Try something like this:尝试这样的事情:
const CreateNewTab = () => {
const [priceMap, setPriceMap] = useState({});
return (
<Form>
<Form.Item
label="Price Map"
name="priceMap"
rules={[{ required: true, message: "Please input Prices!"}]}
>
{selectedProducts.flatMap(productId => products
.filter(product => product.id === productId)
.map(product => (
<Input.Group compact>
<Form.Item label={product.productName + " : "} />
{product.priceList.map((priceObj) => (
<Form.Item
label={priceObj.type}
key={priceObj.priceId}
>
<Input
defaultValue={priceObj.price}
rules={[{ required: true, message: "Please input price!" }]}
onChange={(changedValues) => {
setPriceMap({
...priceMap,
[priceObj.id]: changedValues[Object.keys(changedValues)[0]]
})
}} />
</Form.Item>
))}
</Input.Group>
))
)}
</Form.Item>
</Form>
);
};
Notice that when you call setPriceMap
you pass a new object rather than mutating the object.请注意,当您调用
setPriceMap
您传递的是一个新对象,而不是改变该对象。
A constant is exactly what the name suggests.常量正是顾名思义。 It will always be constant and immutable.
它永远是不变的和不可变的。 If you change it to
let priceMap = {};
如果你把它
let priceMap = {};
you should be able to change its values你应该能够改变它的值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.