首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何挂起按钮显示reactjs在点击事件上批准

如何挂起按钮显示reactjs在点击事件上批准
EN

Stack Overflow用户
提问于 2019-04-15 12:44:49
回答 2查看 264关注 0票数 0

当我单击"pending“按钮时,状态不随此代码而改变,并显示以下消息

代码语言:javascript
复制
TypeError: this.state.data.map is not a function

请帮帮我!

代码语言:javascript
复制
class App extends Component {


  constructor(props) {

    super(props);
    this.state = {
      data: [
        {
          id: 1,
          name: "farid",
          age: 15,
          status: "pending"
        },
        {
          id: 2,
          name: "kamal",
          age: 15,
          status: "pending"
        }
      ],

    }

  }
   movementappTDClick = (id) => () => {

    const index = this.state.data.findIndex((data) => {
      return data.id === id
    })
    let data = Object.assign({}, this.state.data[index]);
    console.log('data is', data);
    data.status = "approved"
    console.log("sec data is", data);
    this.setState({ data });
  };
  render() { 

    return (
      <div className="App">
        <Card>
          <CardBody>
            <Table>
              <thead>
                <tr>
                  <th>ID</th>
                  <th>name</th>
                  <th>age</th>
                </tr>
              </thead>
              <tbody>
                {this.state.data && this.state.data.map(movement => (
                  <tr key={movement.id}>
                    <th>{movement.id}</th>
                    <td>{movement.name}</td>
                    <td>{movement.age} </td>
                    <td>
                      <button
                        onClick={this.movementappTDClick(movement.id)}
                      >
                        {movement.status}
                      </button>
                    </td>
                  </tr>
                ))}
              </tbody>
            </Table>
          </CardBody>
        </Card>
      </div>
    );
  }
}
EN

回答 2

Stack Overflow用户

发布于 2019-04-15 13:04:36

尝试修改您的movementappTDClick函数。

代码语言:javascript
复制
movementappTDClick = index => {
    const data = [...this.state.data];
    const row = data[index];
    row.status = "approved";

    data.splice(index, 1, row);
    this.setState({ data });
  };

  render() {
    return (
      <div className="App">
        <Card>
          <CardBody>
            <Table>
              <thead>
                <tr>
                  <th>ID</th>
                  <th>name</th>
                  <th>age</th>
                </tr>
              </thead>
              <tbody>
                {this.state.data &&
                  this.state.data.map((movement, index) => (
                    <tr key={movement.id}>
                      <th>{movement.id}</th>
                      <td>{movement.name}</td>
                      <td>{movement.age} </td>
                      <td>
                        <button onClick={() => this.movementappTDClick(index)}>
                          {movement.status}
                        </button>
                      </td>
                    </tr>
                  ))}
              </tbody>
            </Table>
          </CardBody>
        </Card>
      </div>
    );
  }
}
票数 0
EN

Stack Overflow用户

发布于 2019-04-15 15:05:41

我修改了你的代码。请检查一下这个。

代码语言:javascript
复制
class App extends Component {


  constructor(props) {

    super(props);
    this.state = {
      data: [
        {
          id: 1,
          name: "farid",
          age: 15,
          status: "pending"
        },
        {
          id: 2,
          name: "kamal",
          age: 15,
          status: "pending"
        }
      ],

    }

  }
   movementappTDClick = (index) => () => {
const { data } = this.state;
data[index] = {
  ...data[index],
  status: 'approved'
}
this.setState({ data }); };

  render() { 
const { data } = this.state;
    return (
      <div className="App">
        <Card>
          <CardBody>
            <Table>
              <thead>
                <tr>
                  <th>ID</th>
                  <th>name</th>
                  <th>age</th>
                </tr>
              </thead>
              <tbody>
                {data && _.map((data || []), (movement, index) => (
                  <tr key={movement.id}>
                    <th>{movement.id}</th>
                    <td>{movement.name}</td>
                    <td>{movement.age} </td>
                    <td>
                      <button
                        onClick={this.movementappTDClick(index)}
                      >
                        {movement.status}
                      </button>
                    </td>
                  </tr>
                ))}
              </tbody>
            </Table>
          </CardBody>
        </Card>
      </div>
    );
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55682710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档