Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在React.js中动态更新状态?_Javascript_Node.js_Reactjs - Fatal编程技术网

Javascript 如何在React.js中动态更新状态?

Javascript 如何在React.js中动态更新状态?,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,每当我选择一个用户时,我想动态更新stateCurrentIndex。现在我正在将其硬编码为0。我想改变这一点。 每当单击用户列表时,我都想更新currentIndex。 侧面板包含用户数组及其输出名lastname class Home extends Component { state = { loadUsers: [], currentIndex: 0, }; async componentDidMount() { const res = awa

每当我选择一个用户时,我想动态更新stateCurrentIndex。现在我正在将其硬编码为0。我想改变这一点。

每当单击用户列表时,我都想更新currentIndex。
侧面板包含用户数组及其输出名lastname

class Home extends Component {
  state = {  
    loadUsers: [],
    currentIndex: 0,
  };

  async componentDidMount() {

    const res = await axios.get("http://localhost:5000/users");
    this.setState({ loadUsers: res.data });
  }

  render() {

    return (
      <Fragment>
        <div className="row">
          <div className="col-md-3" style={{ backgroundColor: "#303F9F" }}>
            <Typography variant="h6">List all Counsellors</Typography>
            {this.state.loadUsers.map((user) => {
              const { _id, firstname, lastname } = user;
              return (
                <div key={_id}>
                  <SidePanel
                    id={_id}
                    firstname={firstname}
                    lastname={lastname}
                  />
                </div>
              );
            })}
          </div>
          <div className="col-md-4">
            {this.state.loadUsers.length > 1 && (
              <div>
                <MiddlePanel
                  user={this.state.loadUsers[this.state.currentIndex]}
                />
              </div>
            )}
          </div>
        </div>
      </Fragment>
    );
  }
}

class Home扩展组件{
状态={
loadUsers:[],
当前索引:0,
};
异步组件didmount(){
const res=等待axios.get(“http://localhost:5000/users");
this.setState({loadUsers:res.data});
}
render(){
返回(
列出所有顾问
{this.state.loadUsers.map((用户)=>{
const{u id,firstname,lastname}=user;
返回(
);
})}
{this.state.loadUsers.length>1&&(
)}
);
}
}

创建一个处理程序来使用映射的索引,并在需要的地方传递/附加处理程序

class Home extends Component {
  state = {  
    loadUsers: [],
    currentIndex: 0,
  };

  ...

  incrementIndex = (currentIndex) => (e) => this.setState({ currentIndex });

  render() {

    return (
      <Fragment>
        <div className="row">
          <div className="col-md-3" style={{ backgroundColor: "#303F9F" }}>
            ...
            {this.state.loadUsers.map((user, index) => {
              const { _id, firstname, lastname } = user;
              return (
                <div key={_id}>
                  <SidePanel
                    id={_id}
                    firstname={firstname}
                    lastname={lastname}
                    onClick={incrementIndex(index)} // <-- pass handler to Panel
                  />
                </div>
              );
            })}
          </div>
          ...
        </div>
      </Fragment>
    );
  }
}
class Home扩展组件{
状态={
loadUsers:[],
当前索引:0,
};
...
incrementIndex=(currentIndex)=>(e)=>this.setState({currentIndex});
render(){
返回(
...
{this.state.loadUsers.map((用户,索引)=>{
const{u id,firstname,lastname}=user;
返回(

你能提供你的代码尝试递增
this.state.currentIndex
?我在当前代码段中没有看到任何处理程序或逻辑。