【问题标题】:How can I use handle change event on text box to update react array state?如何使用文本框上的句柄更改事件来更新反应数组状态?
【发布时间】:2020-06-20 17:43:47
【问题描述】:

下面是代码,在预加载时,所有项目都绑定在文本框中,并且在同一个文本框的帮助下,我想在反应中更新 state 的值。 items 状态 get 已更新,但一旦 handlechange 方法执行结束,它就会引发错误。 items.map 不是函数。如何使用文本框上的句柄更改功能来更新数组状态?

import React, { useState, useEffect } from "react";
import { Link } from "react-router-dom";
import {getItems} from "./helper/adminapicall";

const ManageItems = () => {
  const [items, setItems] = useState([]);

  const preload = () => {
    getItems().then((data) => {
      if (data.error) {
        console.log(data.error);
      } else {
        setItems(data);
      }
    });
  };
  
  const handleChange = (index, name) => (event) => {
    setItems({
      ...items[index].name,
      error: false,
      [name]: event.target.value,
    });

    console.log(items);
  };

  useEffect(() => {
    preload();
  }, []);

  return (
    <Base title="Welcome admin" description="Manage items here">
      <h2 className="mb-4">All items:</h2>
      <Link className="btn btn-info" to={`/admin/dashboard`}>
        <span className="">Admin Home</span>
      </Link>
      <div className="row">
        <div className="col-12">
          <h2 className="text-center text-white my-3">Total 3 
           products</h2>
          {items &&
            items.map((item, index) => {
              return (
                <div className="row form-group" key={index}>
                  <div className="col-4">
                    <input
                      type="text"
                      className="form-control"
                      value={item.name}
                    onChange={handleChange(index, "name")}
                    />
                  </div>                
                </div>
              );
            })}
        </div>
      </div>
    </Base>
  );``
};

export default ManageItems;
 

【问题讨论】:

    标签: reactjs react-native react-state


    【解决方案1】:

    onchange={e=&gt; setItems(e.target.value)} 我希望这就是您在问题中提出的意思。

    【讨论】:

    • 感谢 Samuel 的回答,但我不明白如果不在文本框中调用 handlechange 方法将如何执行。
    猜你喜欢
    • 1970-01-01
    • 2021-01-24
    • 2021-10-22
    • 2021-10-08
    • 2021-07-07
    • 2016-06-25
    • 2017-05-05
    • 1970-01-01
    • 2018-11-03
    相关资源
    最近更新 更多