javascript - React router Link 不会在 if 语句后更新路由

标签 javascript reactjs react-router p5.js

我希望这个问题还没有在某个地方得到解答而且我还没有找到它... 所以我对 React.js 还是个新手,但无论如何我总是用它尝试新事物。

我已经完成了研究,但提议的解决方案似乎都不适合我。我将留下一些我搜索过的示例:

How to use Redirect in the new react-router-dom of Reactjs

Redirecting in React

React-router route won't trigger

所以我基本上有这段代码:

clicked(mousePosX, mousePosY) {
 let d = property.dist(mousePosX, mousePosY, this.x, this.y);
 if (d < this.w && d < this.h) {
  console.log("square"); //working until here
  return <Link to="/test/" />; //not redirecting
 }
}

我把它放在一个 中,它在 p5 库的帮助下创建了一个正方形,该库也在内部 一个 const 箭头函数。

我也尝试过将 Link 标签更改为 Redirect 标签,但没有成功。

如果您想查看整个文件(或项目),请点击此处链接:

Whole file (github)

我想要它做的是在用户点击屏幕上的任何方 block 后将用户重定向到其他地方。

如果有任何帮助,我将不胜感激。提前致谢。

最佳答案

<Link/>在您单击它之前不会重定向到其他地方,要以编程方式重定向您需要使用 <Redirect/>组件。

更新您的 clicked函数,当用户点击方框时,将状态中的redirect变量设置为true。 并在渲染函数中检查是否 redirect是真的,如果它是 true然后使用 <Redirect/>组件重定向到其他地方,否则返回您的其他 UI 组件。

这是基本状态设置的样子-

constructor(props){
    super(props);
    this.state = {
        redirect: false,
        //other state data
    }
}
clicked(mousePosX, mousePosY) {
 let d = property.dist(mousePosX, mousePosY, this.x, this.y);
 if (d < this.w && d < this.h) {
  console.log("square"); 

  this.setState({
    redirect:true, //set redirect to true
  });

 }
}

在你的渲染函数中

render(){
    if(this.state.redirect){
        return <Redirect to="/test" />
    }
    else{
        //return something else
    }
}

关于javascript - React router Link 不会在 if 语句后更新路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59098844/

相关文章:

javascript - 获取ID数组中所有具有匹配ID的元素

javascript - 尝试构建一个基本的 React-Redux 点击切换器,但没有显示任何内容

javascript - 使用 if else 声明 `let` 或 `const` 在 if/else 之后使用?

javascript - 表单提交后响应路由器重定向

reactjs - React Router 导致 Firebase 更新时重新安装组件

reactjs - 我如何使用 Nextjs 将我的 URL 与应用程序状态同步

javascript - applicationCache 在共享 webworker (HTML5) 中是 'undefined'

javascript - google analytics 的异步 api 如何跟踪点击链接

javascript - 将数据添加到同一行的 2 列中,数据来自 Javascript Websocket

reactjs - 如何在 reactjs 中渲染特定 div 内的元素?