繁体   English   中英

通过仅传递一次道具多次执行状态和数组操作

Performing state and array manipulation more than once by passing props only once

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我是React的新手,这让我很困惑。 我有一个具有数组的根组件,并且正在将函数ADD和DELETE作为道具传递给子组件ui_forms 在子组件中,我接受输入参数,并根据按下的按钮从数组中推送或删除数组。 但是,我似乎不能多次执行推/删除操作,因为我想我在根组件中只注入了一次子组件。

是否有机会通过仅发送一次道具来执行用户想要的多次推送或删除操作?

谢谢

App.js

import FormsMap from './form_map';

class App extends Component {
  state = {
    maps : [
      {'regno' : 'Karan', 'id' : 1},
      {regno : 'Sahil', 'id' : 2},
      {'regno' : 'Rahul', id : 4},
      {regno : 'Mohit', id : 5},
      {regno : 'Kartik', id : 3}
    ]
  };

   function_as_props(list1) {
      console.log(this.state.maps);
      let ninja = [...this.state.maps];
      console.log(ninja);
      ninja.push({"regno" : list1, "id" : Math.random()*10});

      this.setState({
        maps : ninja 
      });
    console.log(ninja);


    function_as_props1(name) {
       let t = this.state.maps.indexOf(name);  
       let x = this.state.maps.splice(t,1);
       console.log(x);
       this.setState({
         maps : x
       });
       console.log(this.state.maps);
    }
  }

  render() {
      const p = this.state.maps.map(list => {
        return(
           <div key={list.id}> {list.regno} </div>
        );
       })

 return(
   <FormsMap transpose = {this.function_as_props.bind(this)}  traverse ={this.function_as_props1.bind(this)} /> <br />
 );


} 
}

export default app;

form_map.js

import React, { Component } from 'react';

class FormsMap extends Component {
    state = {
        name : null,
        age : null,
        hobby : null
    };

    changes(e) {
        this.setState({
            [e.target.id] : e.target.value
        });
    }

    handle = (e) => {
        e.preventDefault();
        console.log(this.state);
        this.props.transpose(this.state.name);
    }

    dels = (e) => {
        this.setState({
            [e.target.id] : e.target.value
        });
    }

    del_button(e) {
        e.preventDefault();
        //console.log(this.state.name);
        this.props.traverse(this.state.name);
    }
    render() {
        return(
            <React.Fragment>
            <form onSubmit={this.handle}>   {/* After entering all info, Press Enter*/}
                <label htmlFor="labels"> Name : </label>  
                <input type="text" id="name" placeholder="Your name goes here..." onChange={this.changes.bind(this)} />
                <label htmlFor="labels"> Age : </label>  
                <input type="text" id="age" placeholder="Your age goes here..." onChange={this.changes.bind(this)} />
                <label htmlFor="labels"> Hobby : </label>  
                <input type="text" id="hobby" placeholder="Your hobby goes here..." onChange={this.changes.bind(this)} /> <br /><br />
                <input type="submit" value="SUBMIT" /><br /><br />
            </form>

            <input type="text" id="name" placeholder="Enter name to delete..." onChange={this.dels} />   <button onClick={this.del_button.bind(this)}> DELETE </button>
            </React.Fragment>

        );
    }
}

export default FormsMap;
1 个回复

尝试这个


App.js

import React, { Component } from "react";
import FormsMap from "./components/FormsMap";

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      maps: [
        { regno: "Karan", id: 1 },
        { regno: "Sahil", id: 2 },
        { regno: "Rahul", id: 4 },
        { regno: "Mohit", id: 5 },
        { regno: "Kartik", id: 3 }
      ]
    };
  }
  function_as_props(list1) {
    let ninja = this.state.maps.concat({
      regno: list1,
      id: Math.random() * 10
    });
    this.setState({ maps: ninja });
  }
  function_as_props1(name) {
    let x = this.state.maps.filter(
      list => list.regno.toLocaleLowerCase() !== name.toLocaleLowerCase()
    );
    this.setState({
      maps: x
    });
  }
  render() {
    return (
      <React.Fragment>
        {this.state.maps.map(list => <div key={list.id}>{list.regno}</div>)}
        <FormsMap
          transpose={this.function_as_props.bind(this)}
          traverse={this.function_as_props1.bind(this)}
        />
      </React.Fragment>
    );
  }
}

export default App;

FormsMap.js

import React, { Component } from "react";

class FormsMap extends Component {
  state = {
    name: null,
    age: null,
    hobby: null
  };

  changes(e) {
    this.setState({
      [e.target.id]: e.target.value
    });
  }

  handle = e => {
    e.preventDefault();
    this.props.transpose(this.state.name);
  };

  dels = e => {
    this.setState({
      [e.target.id]: e.target.value
    });
  };

  del_button(e) {
    e.preventDefault();
    this.props.traverse(this.state.name);
  }
  render() {
    return (
      <React.Fragment>
        <form onSubmit={this.handle}>
          {" "}
          {/* After entering all info, Press Enter*/}
          <label htmlFor="labels"> Name : </label>
          <input
            type="text"
            id="name"
            placeholder="Your name goes here..."
            onChange={this.changes.bind(this)}
          />
          <label htmlFor="labels"> Age : </label>
          <input
            type="text"
            id="age"
            placeholder="Your age goes here..."
            onChange={this.changes.bind(this)}
          />
          <label htmlFor="labels"> Hobby : </label>
          <input
            type="text"
            id="hobby"
            placeholder="Your hobby goes here..."
            onChange={this.changes.bind(this)}
          />{" "}
          <br />
          <br />
          <input type="submit" value="SUBMIT" />
          <br />
          <br />
        </form>
        <input
          type="text"
          id="name"
          placeholder="Enter name to delete..."
          onChange={this.dels}
        />{" "}
        <button onClick={this.del_button.bind(this)}> DELETE </button>
      </React.Fragment>
    );
  }
}

export default FormsMap;

这是演示: https : //codesandbox.io/s/xl97xm6zpo

1 PHP passthru执行状态

我正在尝试使用PHP passthru函数在Linux上执行OS命令。 我使用它如下。 Linux命令只是列出我不知道的目录中的文件,然后回显状态以确保它不为0。 但是状态似乎是命令的整个输出,包括状态号 为什么是这样? ...

2016-11-28 13:34:28 2 44   php/ linux
2 传播执行状态

描述 如何在Powershell中传播执行状态($?)? 例如,假设函数内部的命令失败(因此$?是$FALSE )。 你如何使函数本身也失败(因此$?是$FALSE )。 例 说$? 执行命令git.exe push @Args后为$FALSE 。 $? 执行函数gi ...

6 标记进程以确定其执行状态

我有一个使用快捷方式运行的脚本D:\\Script.ps1 : 如何在控制台中看到进程Script正在运行? 如何在脚本或快捷方式描述中标记此过程,以便我可以查看它是否正在工作或已经完成任务并完成工作? 我可以使用 ID (Get-Process).ID跟踪进程,但在启动操作系统时我不知道进程的 ...

7 如何进入FutureTask执行状态?

我有一个singleThreadExecutor以便以串行顺序执行提交给它的任务,即一个任务接一个,没有并行执行。 我有可运行的东西,像这样 } 例如,当我向上述单线程执行器提交MyRunnable的三个实例时,我希望执行第一个任务,并且由于Thread.sleep在TIME ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM