代码之家  ›  专栏  ›  技术社区  ›  Senthuran

更新react中的用户信息

  •  -1
  • Senthuran  · 技术社区  · 6 年前

    我正在React中做一个积垢应用示例。我有一个AddUser组件和User组件。所有用户详细信息都存储在UserComponent中(即我将详细信息存储在state中)。

    我有一个更新现有用户的要求(即,当我点击编辑按钮时,详细信息应该出现在AddUser组件的文本框中,当我在进行更改后点击提交时,这些信息将保存在用户状态中)。 我找到了一种方法,可以将用户详细信息从user组件传递到AddUser组件(即使用props)。

    如何在AddUser组件的文本字段中显示用户的详细信息?下面的代码在AddUser组件的render方法中。

    <div>
      <form id="theForm" >
        <div class="form-group">
          <label >Name</label>
          <input type="text" class="form-control" name='name' aria-describedby="nameHelp" onChange={this.handleChange} value={user.name} placeholder="Enter Name" />
        </div>
        <div class="form-group">
          <label >Age</label>
          <input type="text" class="form-control" name="age" aria-describedby="ageHelp" onChange={this.handleChange} value={user.age} placeholder="Enter Age" />
        </div>
        <div class="form-group">
          <label >Address</label>
          <input type="text" class="form-control" name="address" aria-describedby="addressHelp" onChange={this.handleChange} value={user.address} placeholder="Enter Address" />
        </div>
        <div class="form-group">
          <button type="button" class="btn btn-primary" onClick={this.handleSubmit}>Submit</button>
        </div>
      </form>
    </div>
    

    下面的代码在用户组件的render方法中。

    <div>
      <h1 align="center">Crud Application</h1>
      <table class="table">
        <thead>
          <tr>
            <th> Name  </th>
            <th> Age   </th>
            <th>Address</th>
          </tr>
        </thead>
        <tbody>
          {userlist}
        </tbody>
      </table>
      <AddUser AddUser={this.AddUser} edituser={this.state.users}/>
    </div>
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   abhay    6 年前

    你的问题有一个简单的解决办法。

    用户页.jsx

    import React, {useState} from 'react'
    import AddEditUser from './AddEditUser'
    import UserList from './UserList'
    
    const [userList,setUserList] = useState([])
    const [currentUser,setCurrentUser] = useState()
    
    const updateList = (data, editFlag) => {
      let newList = [...userList]
      if(editFlag) {
        newList = userList.filter(item => item.id !== data.id).concat([data])
      } else {
        newList = userList.concat([data])
      }
      setUserList(newList)
    }
    return (
      <>
        <UserList userList={userList} setCurrentUser={setCurrentUser} />
        <AddEditUser user={currentUser} updateUserList={updateUserList} />
      </>
    )
    

    这是一个简单的例子,你可以使用。 根据您的用例,您可以修改您更改的内容、更新方式等。