关于react 子组件父组件之间的传值

父组件给子组件传值

写在前面:这里用到的PageinationItem组件是ant-design提供的。当然你也可以自定义组件。

  • 父组件引用子组件

需要添加待传递的变量名称和变量数据

<PageinationItem defaultCurrent={1} defaultPageSize={defaultPageSize}
                 current={this.state.current} total={total} pages={pages}
                />
  • 在子组件用props接收父组件传来的值

方法:通过construcror(props)super(props)接收
用这个方法可以将props里的数据转换成可以直接使用的数据const { defaultCurrent, current, total, defaultPageSize } = this.props;(当然,写this.props.total也是可以的)

 constructor(props) {
    super(props);
    this.state = {
    };
  }

 render() {
    const { defaultCurrent, current, total, defaultPageSize } = this.props;
    return (
      <div>
        <Pagination
          defaultCurrent={defaultCurrent}
          current={current}
          total={total}
          pageSize={defaultPageSize}
        />
      </div>
    );
  }

子组件给父组件传值

通过函数返回值,在父组件设置接收函数,并在父组件内对值进行操作。

  • 父组件设置接收函数和处理函数
<PageinationItem getPageResultArray={this.getPageResultArray} />
  • 子组件给父组件传值的函数
//给父组件的getPageResultArray返回参数key
<Pagination onChange={key => this.props.getPageResultArray({ key })}/>


//接收值(key)进行函数处理
  getPageResultArray = result => {
    result = result.key;//测试发现接收的是key:2这样形式的值,所以进行了格式调整
    this.setState(//改善异步setState的缺陷,使状态设置完毕后再进行下面的函数处理
      () => {
        return { current: result };
      },
      () => {//这里是一些分页操作,下一篇博客会着重讲怎么分页
        const { current, defaultPageSize } = this.state;
        reqPageItems(current, defaultPageSize)
          .then(response => {
            if (response.isSuccess) {
              /**存储分页信息于state */
              this.setState({
                pageItem: response.data.experimentsData.records
              });
              this.setState({ total: response.data.experimentsData.total });
              this.setState({ pages: response.data.experimentsData.pages });
            } else {
              message.error(response.message);
            }
          })
          .catch(error => {
            console.log("failed", error);
            message.error(error.message);
          });
      }
    );
  };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值