reactjs - 在反应中从子组件调用动作
问题描述
我有一个上下文提供者操作
import React, {Component} from 'react';
import MemberSelectionContext from './MemberSelectionContext';
class MemberSelectionProvider extends Component {
state = {
selectedMembers: []
};
get actions() {
return {
onPageChanged: this.onPageChanged
};
}
onPageChanged = data => {
};
render() {
const {children} = this.props;
return (
<MemberSelectionContext.Provider value={{
store: this.state,
actions: this.actions
}}>
{children}
</MemberSelectionContext.Provider>
);
}
}
export default MemberSelectionProvider;
onPageChanged
```来自child1的动作调用``通过以下方式
<button className="btn btn-outline-secondary" onClick={this.props.actions.onPageChanged}>
<i className="fa fa-backward" aria-hidden="true"></i>
<span className="sr-only-xs">Previous</span>
</button>
我想onPageChanged
从另一个子组件 child2 调用此事件
this.props.actions.onPageChanged = function(){
};
如何从 child2 调用 onPageChanged 操作?
解决方案
只需将参考传递getActions
给孩子作为prop
class MemberSelectionProvider extends Component {
get actions() {
return {
onPageChanged: this.onPageChanged
};
}
onPageChanged = data => {
};
render(){
return <Child getActions={this.getActions}/>
}
而里面Child
const Child = ({ getActions }) =>{
const actions = getActions()
acions.onPageChanged()
}
它也适用Providers
,但不是props
存储getActions
内部的引用value
并像这样使用它
const context = useContext(MemberSelectionContext)
const actions = context.getActions()
actions.onPageChange()
推荐阅读
- django - 模型字段上的 Django getter
- html - html 水平无序列表 - 由 prestashop 覆盖
- python - 如何使用 py2neo 计算与节点的关系(一种类型)
- ios - 关于在应用商店处理 iAP 成功的问题
- hadoop - Hadoop 2.7.7,无法使用端口 8088 打开资源管理器 Web
- java - 上下文初始化期间遇到异常
- haskell - 每个元素与前一个元素最多相差 1 的随机列表
- sql - SQL Server 2008 R2 - sp_send_dbmail
- css - CSS媒体查询选择性地不起作用
- r - ShinyR:在数据库中插入用户输入以供进一步使用