【问题标题】:Assigning value in a const在 const 中赋值
【发布时间】: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


【解决方案1】:

如果你必须改变它的值,那么你可以用let而不是const来声明它。 (const 的重点不是重新赋值)。

  const handleChange = nameChecked => event => {
    let { name, value } = event.target;

    setCheckedA({ [nameChecked]: event.target.checked });

    if (event.target.checked === true) {
      console.log("True: " + event.target.checked);
      value = "S";
//...

【讨论】:

    【解决方案2】:

    常量是块范围的,很像使用 let 定义的变量 陈述。常量的值不能通过重新赋值来改变, 并且不能重新声明

    所以 const 的意义在于,一旦声明,就无法更改。如果您需要为变量分配和重新分配值的能力。使用 letvar 会更好。

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 2013-04-17
      • 2013-04-19
      • 1970-01-01
      • 2016-06-23
      • 2013-10-25
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      相关资源
      最近更新 更多