Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何重定向到组件并使用redux和react设置初始状态?_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 如何重定向到组件并使用redux和react设置初始状态?

Javascript 如何重定向到组件并使用redux和react设置初始状态?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有一个组件,它有一个html按钮,当单击该按钮时,需要向redux reducer中的数组添加一个字符串,然后重定向并呈现另一个组件,使用原始组件传入的此状态初始化它。当我点击按钮时,它会得到我想要的正确字符串,console.log(pro)会从我设置状态的原始组件中得到字符串,我需要用这个屏幕初始化成员组件的状态,但页面不会加载。当我硬编码字符串并以相同的方式重定向路由时,我使用的组件工作 原始组件如下所示 const Posts = (props) => { const dis

我有一个组件,它有一个html按钮,当单击该按钮时,需要向redux reducer中的数组添加一个字符串,然后重定向并呈现另一个组件,使用原始组件传入的此状态初始化它。当我点击按钮时,它会得到我想要的正确字符串,console.log(pro)会从我设置状态的原始组件中得到字符串,我需要用这个屏幕初始化成员组件的状态,但页面不会加载。当我硬编码字符串并以相同的方式重定向路由时,我使用的组件工作

原始组件如下所示

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);我仍然从这个字符串中得到控制台中我想要返回的所有对象,但是它仍然没有加载