【发布时间】:2019-04-19 08:24:29
【问题描述】:
如何在我的 const 中赋值?
在表单中,我有一些来自检查的输入,当值为 true 时,我需要更改此值以与客户端的 web 服务通信,如果为 false,我也需要更改值,但我做不到只需用新值声明 const 即可。
我尝试直接在const中更改值,但不起作用
在 CodeSandbox 中关注我的代码: https://codesandbox.io/s/n08n2m7mpj
import React, { useState } from "react";
import ReactDOM from "react-dom";
import Switch from "@material-ui/core/Switch";
import "./styles.css";
function App(props) {
const initialFormState = {
datRev: "01/05/2019",
empRev: "1",
numCad: "5",
numEmp: "1",
obsRev: "ReactJS done!",
sitRev: "1",
tipCol: "1",
tipEqp: "10",
tipSvc: "100",
cheklist: {
"": "",
"": "",
"": "",
"": ""
},
codCkl: "4",
sitCkl: "N",
selPro: "S",
obsCkl: "obs insomina"
};
const [equipRev, setEquipRevisao] = useState(initialFormState);
const [checkedA, setCheckedA] = useState(false);
const handleChange = nameChecked => event => {
const { name, value } = event.target;
setCheckedA({ [nameChecked]: event.target.checked });
if (event.target.checked === true) {
console.log("True: " + event.target.checked);
const value = "S";
} else {
console.log("False: " + event.target.checked);
const value = "N";
}
console.log("Value: " + value);
setEquipRevisao({ ...equipRev, [name]: value });
console.log("sitCkl: " + equipRev.sitCkl);
};
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<Switch
name="sitCkl"
checked={props.checkedA}
onChange={handleChange("checkedA")}
value={equipRev.sitCkl}
/>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
我希望“event.target.checked”为真,它将sitCkl的值从equipRev更改为'S',当它为假时,它将sitCkl的值从equipRev更改为'N'。
【问题讨论】:
-
所以不要声明为常量,声明为变量。
const表示it will never change -
const的想法是防止标识符绑定到新值。如果您需要更改该值,则应使用let(或var)声明标识符。 -
const几乎是immutable。使用let代替它。
标签: javascript reactjs constants