首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在控制台中接收单个React元素子元素

在控制台中接收单个React元素子元素
EN

Stack Overflow用户
提问于 2019-02-04 20:11:38
回答 1查看 72关注 0票数 1

我正在尝试做一个有历史的基本路由器,我有:

代码语言:javascript
运行
复制
import {BrowserRouter, Route} from 'react-router-dom';
import createBrowserHistory from 'history/createBrowserHistory'
...

render() {
        return (
            <BrowserRouter>
            <Switch>
                <Route path="/login" component={PageA}/>
                <Route path="/dashboard" component={PageB}/>
                <Route path="/companies" component={PageC}/>
            </Switch>
            </BrowserRouter>
        )
    }
}

ReactDOM.render(<App />, document.getElementById('app'))

但我一直在想:

代码语言:javascript
运行
复制
Uncaught Error: React.Children.only expected to receive a single React element child

此错误在控制台中重复四次。

我在论坛上跟踪了许多其他的答案,但它仍然不起作用。

这是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-04 20:40:53

保持事物清洁:

您应该在src中创建一个history.js,如下所示:

代码语言:javascript
运行
复制
import createHistory from 'history/createBrowserHistory';

export default createHistory();

在您的index.js中,导入Router而不是BrowserRouter,并将历史作为一个支柱传递,如下所示:

代码语言:javascript
运行
复制
import {Router, Route, Switch} from 'react-router-dom';
import history from '../history' // relative path to the file you created above...
...

render() {
        return (
            <Router history={history}> // pass it as a prop here...
              <Switch>
                <Route path="/login" component={PageA}/>
                <Route path="/dashboard" component={PageB}/>
                <Route path="/companies" component={PageC}/>
              </Switch>
            </Router>
        )
    }
}

现在您可以使用history.push('/path_you_want')在动作之后重定向等等..。

备注:如果你不使用redux,这可能是过火了.为了更简单地重定向,请查看库提供的<Redirect />组件..。提供示例的更多信息:https://reacttraining.com/react-router/web/api/Redirect

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54523647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档