你好,我正试图在导航栏中的页面之间重定向,我想知道如何做那个特定的组件。
这是我的代码。
function redirectRegistration() {
window.location = '../src/Registration.JS'
}
function redirectLogin() {
window.location = '../src/App.js'
}
const loginBtn = document.getElementById('login');
const registerBtn = document.getElementById('registerPage');
loginBtn.addEventListener('click' , redirectLogin);
registerBtn.addEventListener('click' , redirectRegistration)我正在尝试知道如何从我的登录重定向到我的注册页面。
发布于 2019-02-07 02:37:17
两件事。
首先,React有一个虚拟dom,它不是围绕获取元素ID然后向它们添加侦听器而构建的。React组件有一个render方法,您可以在其中放置JSX (基本上是HTML),其中可以为它们所在的HTML放置事件侦听器方法。
通常,您将在React中构建按钮组件,然后添加onClick方法,这与添加单击事件侦听器相同。老实说,我不确定doucment.getElementByID是否能与React一起工作,但即使它能工作,这也不是React的设计使用方式,以这种方式构建会给你带来问题。
其次,在React中,除非您重定向到外部位置,否则通常不会使用window.location进行重定向。即便如此,您通常会将其封装在React Router的标记中。React/SPA的一个优点是,您只需刷新页面中已更改的部分,而使用window.location可以消除这一优势。
React Router通常是您在React中重定向的方式,但这也是围绕React组件的使用构建的,而不是使用getElementByID,然后使用事件侦听器。
建议:将按钮重构为React组件,然后使用React Router进行重定向。
发布于 2019-02-07 02:08:54
你不是在用“反应的方式”做事情。您可以使用箭头语法重写函数,也可以在render方法中使用JSX创建按钮。试试这个:
redirectRegistration = () => {
window.location = '../src/Registration.JS'
}
redirectLogin = () => {
window.location = '../src/App.js'
}
render() {
return (
<React.Fragment>
<button id="login" onClick={this.redirectLogin}>Login</button>
<button id="registerPage" onClick={this.redirectRegistration}>Register</button>
</React.Fragment>
);
}https://stackoverflow.com/questions/54559677
复制相似问题