Javascript 如何重定向到组件并使用redux和react设置初始状态?
我有一个组件,它有一个html按钮,当单击该按钮时,需要向redux reducer中的数组添加一个字符串,然后重定向并呈现另一个组件,使用原始组件传入的此状态初始化它。当我点击按钮时,它会得到我想要的正确字符串,console.log(pro)会从我设置状态的原始组件中得到字符串,我需要用这个屏幕初始化成员组件的状态,但页面不会加载。当我硬编码字符串并以相同的方式重定向路由时,我使用的组件工作 原始组件如下所示Javascript 如何重定向到组件并使用redux和react设置初始状态?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有一个组件,它有一个html按钮,当单击该按钮时,需要向redux reducer中的数组添加一个字符串,然后重定向并呈现另一个组件,使用原始组件传入的此状态初始化它。当我点击按钮时,它会得到我想要的正确字符串,console.log(pro)会从我设置状态的原始组件中得到字符串,我需要用这个屏幕初始化成员组件的状态,但页面不会加载。当我硬编码字符串并以相同的方式重定向路由时,我使用的组件工作 原始组件如下所示 const Posts = (props) => { const dis
const Posts = (props) => {
const dispatch = useDispatch();
const getProfile = async (member) => {
const addr = await dispatch({ type: 'ADD_MEMBER', response: member })
console.log(member)
props.history.push('/member'
);
const socialNetworkContract = useSelector((state) => state.socialNetworkContract)
return (
<div>
{socialNetworkContract.posts.map((p, index) => {
return <tr key={index}>
<button onClick={() => getProfile(p.publisher)}>Profile</button>
</tr>})}
</div>
)
}
export default Posts;
路线是这样的
const Posts = (props) => {
const dispatch = useDispatch();
const getProfile = async (member) => {
const addr = await dispatch({ type: 'ADD_MEMBER', response: member })
console.log(member)
props.history.push('/member'
);
const socialNetworkContract = useSelector((state) => state.socialNetworkContract)
return (
<div>
{socialNetworkContract.posts.map((p, index) => {
return <tr key={index}>
<button onClick={() => getProfile(p.publisher)}>Profile</button>
</tr>})}
</div>
)
}
export default Posts;
即使它在我的终端上编译时没有错误,当我点击按钮时,我在浏览器中得到这个错误
src/components/posts/posts.js:69
66 | const getProfile = async (member) => {
67 | const addr = await dispatch({ type: 'ADD_MEMBER', response: member })
68 | console.log(member)
> 69 | props.history.push('/member'
| ^ 70 | //{
71 | // pathname: '/member',
72 | // state: {
View compiled
这是我的routes.js文件
const Routes = () => {
return (
<Switch>
<Route path="/posts" exact component={Posts} />
<Route path="/member" exact component={Member} />
<Redirect exact to="/" />
</Switch>
)
}
export default Routes
const Routes=()=>{
返回(
)
}
导出默认路由
在“添加成员”的第一批邮件中,我猜您有一个减速机收到了。注意,分派静态值不需要异步。在第二个组件中,您是从历史中收集状态,而不是从减速器中收集状态。看起来您的代码中的useffect在useffect.props.history.push(“/member”)中有错误;历史是你传递给帖子的东西,对吗?我可以看看你是如何调用POST的吗?因为我猜你使用历史的方式是错误的。有人告诉我历史是一种内置的方法来更改页面,我不知道有什么要传递,我用我的路由编辑了它。你可以通过withRouter高阶组件访问历史对象的属性和最接近的匹配项。withRouter将在渲染时向包装组件传递更新的匹配、位置和历史道具。使用路由器导出默认值(示例)我刚刚尝试使用路由器导出默认值(Posts);我仍然从这个字符串中得到控制台中我想要返回的所有对象,但是它仍然没有加载