ReactJS中Route组件无法渲染函数返回组件的问题求助
问题解答
这两种写法本质不一样,核心原因是React Router的Route组件的element属性要求传入的是React元素,而不是组件函数本身:
- 第一种写法
element={HomePage}:这里的HomePage是一个函数组件(本质是JavaScript函数),并不是React元素。React Router无法直接渲染一个函数,它需要的是这个函数执行后返回的JSX元素,所以这种写法会失效。 - 第二种写法
element={<Home/>}:<Home/>是通过JSX语法创建的React元素(编译后等价于React.createElement(Home)),这符合element属性的要求,所以能正常渲染。
如果想保留HomePage这个封装,正确的写法应该是把它作为组件渲染,也就是:
<Route path="/home" element={<HomePage />} />
这样React会执行HomePage函数,拿到它返回的<Home />元素,再交给React Router渲染。
简单来说:组件是“模具”,React元素是用模具做出来的“成品”,element属性只接受成品,不接受模具。
内容的提问来源于stack exchange,提问作者Eagle
相关产品推荐
相关产品推荐

