useState不讀取if語句之外的變量

我試圖在“if”語句中設置變量“list”,然后通過useState更新數據,但如果我在“if”語句之外寫入setData,則表明變量“list”未定義,因此我必須重寫“if”和“else”語句內的所有代碼(這是不可取的)

const [data, setData] = useState({
  name: "",
  email: "",
  machinetype: [],
});

const handleInputChange = (event) => {
  if (event.target.name === "machinetype") {
    const chck = event.target.checked;
    if (chck) {
      const list = data[event.target.name].concat([event.target.value]);
    } else {
      const index = data[event.target.name].indexOf(event.target.value);
      const remove = data[event.target.name].splice(index, 1);
      const list = data[event.target.name];
    }
    setData({
      ...data,
      [event.target.name]: list,
    });
  }
};

有什么建議嗎?謝謝

? 最佳回答:

if語句中聲明的變量保持在if語句的范圍內。因此,當指針離開if塊時,變量被釋放。

你所需要做的就是

const [data, setData] = useState({
  name: "",
  email: "",
  machinetype: [],
});

const handleInputChange = (event) => {
  if (event.target.name === "machinetype") {
    const chck = event.target.checked;
    let list = null;
    if (chck) {
      list = data[event.target.name].concat([event.target.value]);
    } else {
      const index = data[event.target.name].indexOf(event.target.value);
      const remove = data[event.target.name].splice(index, 1);
      list = data[event.target.name];
    }
    setData({
      ...data,
      [event.target.name]: list,
    });
  }
};
主站蜘蛛池模板: 成人免费视频一区| 一本大道在线无码一区| 国产精品乱码一区二区三区| 国产激情一区二区三区小说| 国产精久久一区二区三区| 成人无码一区二区三区| 精品3d动漫视频一区在线观看| 冲田杏梨AV一区二区三区| 在线播放国产一区二区三区 | 日韩一区二区视频| 中文字幕一区二区三区永久| 3d动漫精品成人一区二区三| 国产精品一区二区三区久久| 国产高清不卡一区二区| 日本一区二区三区四区视频| 久久国产精品免费一区| 国产一区二区三区播放心情潘金莲| 夜夜精品无码一区二区三区| 亚洲中文字幕久久久一区| 久久精品国产免费一区| 冲田杏梨AV一区二区三区| 奇米精品一区二区三区在| 成人精品视频一区二区三区尤物| 国产亚洲一区二区三区在线| 一区二区3区免费视频| 成人精品一区二区不卡视频| 亚洲天堂一区二区| 肉色超薄丝袜脚交一区二区| 国产在线观看一区精品| 国产精品女同一区二区久久| 国产一区中文字幕| 国产精品分类视频分类一区| 综合久久一区二区三区| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 无码av免费一区二区三区试看| 冲田杏梨AV一区二区三区| 亚洲影视一区二区| 成人区精品一区二区不卡亚洲| 精品人妻AV一区二区三区| 91video国产一区| 天堂一区二区三区精品|