我无法使用相同的事件处理程序将参数从子组件传递到父组件。
我的组件树遵循以下结构:
- 产品列表
- 产品网格
- 分页栏
在 ProductList 组件中,我有这个事件处理程序
handlePagination = (index) => { bla bla bla }
<PaginationBar
OnPagination={(index) => this.handlePagination(index)}
pages={this.state.pages}
/>
当我呈现页面时,在分页栏中。
render() {
return (
<nav aria-label="Catalog page navigation">
<ul className="pagination">
<li className={this.navButtonEnabled(0)} key="page-item-0">
<a
className="page-link"
onClick={this.props.OnPagination(0)}
href="#"
aria-label="Previous"
>
<span aria-hidden="true">Previous 3</span>
</a>
</li>
<li className={this.navButtonEnabled(1)} key="page-item-1">
<a
className="page-link"
onClick={this.props.OnPagination(1)}
href="#"
>
<span aria-hidden="true">
{this.navButtonDisplay(this.props.pages.navigation[1])}
</span>
</a>
</li>
<li className={this.navButtonEnabled(2)} key="page-item-2">
<a
className="page-link"
onClick={this.props.OnPagination(2)}
href="#"
>
<span aria-hidden="true">
{this.navButtonDisplay(this.props.pages.navigation[2])}
</span>
</a>
</li>
<li className={this.navButtonEnabled(3)} key="page-item-3">
<a
className="page-link"
onClick={this.props.OnPagination(3)}
href="#"
>
<span aria-hidden="true">
{this.navButtonDisplay(this.props.pages.navigation[3])}
</span>
</a>
</li>
<li className={this.navButtonEnabled(4)} key="page-item-4">
<a
className="page-link"
onClick={this.props.OnPagination(4)}
href="#"
aria-label="Next"
>
<span aria-hidden="true">Next 3</span>
</a>
</li>
</ul>
</nav>
);
}
}
在 onClick 事件中,我使用索引号(这是我要传递的参数)调用事件处理程序,根据单击的按钮,我正确呈现 ProductsGrid。但它根本不起作用,我尝试了几种方法,我只想通过参数传递一个数字以用于提升事件处理程序。我究竟做错了什么?
这是控制台中出现的错误。
react_devtools_backend.js:6 警告:在现有状态转换期间无法更新(例如 within render
)。渲染方法应该是 props 和 state 的纯函数。在 Pagination(由 Catalog 创建) in Catalog(由 App 创建) in main(由 App 创建) in App
在渲染过程中我没有更改任何状态,事件处理程序会在单击按钮时更改状态。这不是渲染过程。