Javascript 将动态添加的html列表项推送到最后一个数组中

Javascript 将动态添加的html列表项推送到最后一个数组中,javascript,reactjs,Javascript,Reactjs,如何将html推送到最后一个数组中。我正在尝试添加一个项目,并且应该立即添加到列表数组中。cod正在工作,但我正在努力将新列表添加到最后一个数组中 function addItem(id,name){ const array = JSON.parse(localStorage.getItem('categories')); array.push({ name: name, id:id,

如何将html推送到最后一个数组中。我正在尝试添加一个项目,并且应该立即添加到列表数组中。cod正在工作,但我正在努力将新列表添加到最后一个数组中

   function addItem(id,name){

        const array = JSON.parse(localStorage.getItem('categories'));

              array.push({
             name: name,
             id:id,
      }); 

     //<li>{name}</li> push this into last array

     localStorage.setItem('categories',JSON.stringify(array));
    }


    {categories.map(function(item, key){
             return <div> 
             <ul>
                <li>item.name</li>
              </ul>
            <button onClick={() => addItem(item.id,'value name')}>Add</button>
               </div>
      })}
函数附加项(id、名称){
const array=JSON.parse(localStorage.getItem('categories');
array.push({
姓名:姓名,,
id:id,
}); 
//
  • {name}
  • 将其放入最后一个数组 setItem('categories',JSON.stringify(数组)); } {categories.map(函数(项,键){ 返回
    • item.name
    addItem(item.id,'value name')}>Add })}
    在您的示例中,有些地方看起来不对劲。我添加了一个完整的示例。您可以同时维护本地存储和状态。我希望这个例子能帮助你

    您的错误是,在添加新项时,您正在将其推送到localStoage,因此react dom不会重新提交。你必须更新状态的值

    类应用程序扩展了React.Component{
    构造函数(){
    超级();
    此.state={
    类别:[
    {
    姓名:“你好”,
    身份证号码:1
    },
    {
    名称:“世界”,
    身份证号码:2
    }
    ]
    };
    this.addItem=this.addItem.bind(this);
    this.SaveToLocalStorage=this.SaveToLocalStorage.bind(this);
    }
    SaveToLocalStorage(){
    const categories=this.state.categories;
    setItem(“categories”,JSON.stringify(categories));
    }
    附加项(id、名称){
    const categories=this.state.categories;
    类别.推送({
    姓名:姓名,,
    id:id
    });
    this.setState({categories});
    //setItem(“categories”,JSON.stringify(categories));
    }
    render(){
    让categories=this.state.categories;
    常量测试=categories.map(项=>(
    
  • {item.name}
  • )); 返回( {test} this.addItem(Date.now(),“Item”)}> 单击以添加更多 this.SaveToLocalStorage()}> 保存到本地存储{“”} ); } } ReactDOM.render(,document.getElementById(“根”)
    在您的示例中,有些地方看起来不对劲。我添加了一个完整的示例。您可以同时维护本地存储和状态。我希望这个例子能帮助你

    您的错误是,在添加新项时,您正在将其推送到localStoage,因此react dom不会重新提交。你必须更新状态的值

    类应用程序扩展了React.Component{
    构造函数(){
    超级();
    此.state={
    类别:[
    {
    姓名:“你好”,
    身份证号码:1
    },
    {
    名称:“世界”,
    身份证号码:2
    }
    ]
    };
    this.addItem=this.addItem.bind(this);
    this.SaveToLocalStorage=this.SaveToLocalStorage.bind(this);
    }
    SaveToLocalStorage(){
    const categories=this.state.categories;
    setItem(“categories”,JSON.stringify(categories));
    }
    附加项(id、名称){
    const categories=this.state.categories;
    类别.推送({
    姓名:姓名,,
    id:id
    });
    this.setState({categories});
    //setItem(“categories”,JSON.stringify(categories));
    }
    render(){
    让categories=this.state.categories;
    常量测试=categories.map(项=>(
    
  • {item.name}
  • )); 返回( {test} this.addItem(Date.now(),“Item”)}> 单击以添加更多 this.SaveToLocalStorage()}> 保存到本地存储{“”} ); } } ReactDOM.render(,document.getElementById(“根”)
    我想这就是你想要的。您只需将其设置为状态,并在尝试向列表/数组添加元素时重新渲染它。我不知道为什么要将其设置为本地存储,但如果您只想存储以前的阵列以备将来添加,则可以直接从状态进行设置

    import React, { Component } from "react";
    
    class App extends Component {
      state = {};
      constructor(props){
          super(props);
          this.state={
              arr = []
          }
      }
      addItem(id, name) {
        const array = JSON.parse(localStorage.getItem("categories"));
        array.push({
          name: name,
          id: id
        });
        //<li>{name}</li> push this into last array
        localStorage.setItem("categories", JSON.stringify(array));
        this.setState({arr:array});
      }
      renderList = () => {
          return this.state.array.map(function(item, key) {
            return (
              <div>
                <ul>
                  <li>item.name</li>
                </ul>
                <button onClick={() => addItem(item.id, "value name")}>Add</button>
              </div>
            );
          });
      };
      render() {
        return <div>{this.renderList()}</div>;
      }
    }
    
    export default App;
    
    import React,{Component}来自“React”;
    类应用程序扩展组件{
    状态={};
    建造师(道具){
    超级(道具);
    这个州={
    arr=[]
    }
    }
    附加项(id、名称){
    const array=JSON.parse(localStorage.getItem(“categories”);
    array.push({
    姓名:姓名,,
    id:id
    });
    //
  • {name}
  • 将其放入最后一个数组 setItem(“categories”,JSON.stringify(数组)); this.setState({arr:array}); } renderList=()=>{ 返回this.state.array.map(函数(项,键){ 返回(
    • item.name
    addItem(item.id,“值名称”)}>Add ); }); }; render(){ 返回{this.renderList()}; } } 导出默认应用程序;
    我想这就是你想要的。您只需将其设置为状态,并在尝试向列表/数组添加元素时重新渲染它。我不知道为什么要将其设置为本地存储,但如果您只想存储以前的阵列以备将来添加,则可以直接从状态进行设置

    import React, { Component } from "react";
    
    class App extends Component {
      state = {};
      constructor(props){
          super(props);
          this.state={
              arr = []
          }
      }
      addItem(id, name) {
        const array = JSON.parse(localStorage.getItem("categories"));
        array.push({
          name: name,
          id: id
        });
        //<li>{name}</li> push this into last array
        localStorage.setItem("categories", JSON.stringify(array));
        this.setState({arr:array});
      }
      renderList = () => {
          return this.state.array.map(function(item, key) {
            return (
              <div>
                <ul>
                  <li>item.name</li>
                </ul>
                <button onClick={() => addItem(item.id, "value name")}>Add</button>
              </div>
            );
          });
      };
      render() {
        return <div>{this.renderList()}</div>;
      }
    }
    
    export default App;
    
    import React,{Component}来自“React”;
    类应用程序扩展组件{
    状态={};
    建造师(道具){
    超级(道具);
    这个州={
    arr=[]
    }
    }
    附加项(id、名称){
    const array=JSON.parse(localStorage.getItem(“categories”);
    array.push({
    姓名:姓名,,
    id:id
    });
    //
  • {name}
  • 将其放入最后一个数组 setItem(“categories”,JSON.stringify(数组)); this.setState({arr:array}); } renderList=()=>{ 返回this.state.array.map(函数(项,键){ 返回(
    • item.name
    addItem(item.id,“值名称”)