Присвоение значения в const - PullRequest
0 голосов
/ 19 апреля 2019

Как мне присвоить значение в моем const?

В форме у меня есть некоторые проверенные данные, и когда значение равно true, мне нужно изменить это значение для связи с веб-сервисом клиента, и если онозначение 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', и когдазначение false, оно изменяет значение sitCkl с equipRev на 'N'.

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

Если вам нужно изменить его значение, то вы можете объявить его с 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";
//...
0 голосов
/ 19 апреля 2019

Константы имеют блочную область, во многом как переменные, определенные с помощью let заявление. Значение константы не может измениться путем переназначения, и он не может быть повторно объявлен

Итак, смысл const в том, что как только он объявлен, его нельзя изменить. Если вам нужна возможность присвоить и переназначить значение переменной. Вам будет лучше использовать let или var .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...