我想通过Redux传递一个组件并在另一个组件中显示它。我在做这样的事情:
ComponentToDispatch.js
const ComponentToDispatch = (props) => {
return (<div>Propagate me {props.anthem}</div> {/* props.anthem = undefined, unlike what I expect.*/}
);
};
export {ComponentToDispatch};
// code above
`import {ComponentToDispatch} from "./ComponentToDispatch";
import {showComponentAction} from "./actions";
const BruitEvent =()=>{
const dispatch = useDispatch();
return (<button onClick={(evt)=>dispatch(showComponentAction(ComponentToDispatch)}>
Click to dispatch</button>);
};`
`
export function ShowComponentAction(Component) {
return {
type: SHOW_ACTION,
payload: {
component: <Component />,
},
};
}`
const DispayComponent = () =>{
const { component} = useSelector((state) => {
if (state.testDisplay) {
return {
component: state.testDisplay.component,
};
}
return { component: null };
});
useInjectReducer({ key: "testDisplay", reducer });
return (<div>{component}</div>);
}
export {DisplayComponent};
您需要在分派组件之前实例化并封装道具,或者在分派的动作中传递未实例化的组件和道具对象,并将道具传递给接收端的组件。我建议后者,发送组件和道具在行动。
const BruitEvent =()=>{
const dispatch = useDispatch();
return (
<button
onClick={(evt) => dispatch(
showComponentAction(ComponentToDispatch, /* some possible props object */)
)}
>
Click to dispatch
</button>
);
};
...
export function ShowComponentAction(Component, props = {}) {
return {
type: SHOW_ACTION,
payload: { Component, props }, // <-- assumes reducer places in state.testDisplay
},
};
...
const DispayComponent = () =>{
const { Component, prop } = useSelector((state) => state.testDisplay);
useInjectReducer({ key: "testDisplay", reducer });
return Component ? <div><Component {...props} /></div> : null;
}
我正在使用React Redux进行我的第一个项目,当我尝试在componentDidMount部分中分派函数时,遇到了一些问题。我试图在文档中遵循Reddit API示例项目,但由于它们使用JavaScript,我使用的是TypeScript,所以并非所有内容都是一样的。 这是我试图实现这一点的React组件: 我在行中收到以下错误: 如果存在任何不确定性,可在此处找到该项目:https://g
我有这些文件,不知怎么的,当我分派一些东西时,它总是返回reducer的默认大小写。 这是我第一次使用Redux/Thunk,我正在学习本教程:https://www.youtube.com/watch?v=nrg7zhgjd4w,当他使用它时,它起作用了。 请看一下我的代码: 反应组分: 操作文件: 减速器: 和我的商店: 从“redux”导入{applyMiddleware,createSto
问题内容: 在redux中,当调度一个动作时,reducer将相应地更改状态,调用该动作的组件也可以访问该状态(由Provider通过props传递)。我对吗? 状态是访问组件中操作结果的唯一方法吗?(已调用操作的组件)。 如何将回调函数传递给操作,然后使用该方法将结果发送回组件? 问题答案: 在redux中,当调度一个动作时,reducer将相应地更改状态,调用该动作的组件也可以访问该状态(由P
我试图结合反应路由器v4,反应,和redux。因为react-router跟踪URL,所以我选择将该状态块排除在redux模型之外。 但我仍然需要一种方法来在react路由器发生路由更改时调度redux操作。哪里是最好的地方? 我的第一次尝试是将它放在react路由器链接的onClick属性中: 其思想是,当用户单击链接时,dispatchAction()将更新redux状态,然后加载相册组件。
无法访问Class组件中的还原存储当前状态。 显示控制台错误 函数作为React子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况。或者你想调用这个函数而不是返回它。 当我尝试使用带有 useSelector 和 useDispatch 的函数组件来实现相同的方法时,一切都按预期工作。这到底是怎么回事? reducer.js action.js 商店. js 类别组件 应用内。js
目录 为何组件没有被重新渲染、或者 mapStateToProps 没有运行? 为何组件频繁的重新渲染? 怎样使 mapStateToProps 执行更快? 为何不在被连接的组件中使用 this.props.dispatch ? 应该只连接到顶层组件吗,或者可以在组件树中连接到不同组件吗? React Redux 为何组件没有被重新渲染、或者 mapStateToProps 没有运行? 目前来看,