React-router-dom Render props isn#39;t returning any component(REACT-ROUTER-DOM渲染道具不返回任何组件)
本文介绍了REACT-ROUTER-DOM渲染道具不返回任何组件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在这里使用的是REACT-ROUTER-DOM版本6.0.2,而&Render";道具不起作用,每次我到达路径标签路径中提到的url时,它都会向我抛出这个错误-";匹配的叶路径在位置";/addRecipe";没有元素。这意味着它将在默认情况下呈现为空值的,导致";空白";页面。有人能帮我解决这个问题吗import './App.css';
import Home from './components/Home';
import AddRecipe from './components/AddRecipe';
import items from './data';
import React, { useState } from 'react';
import {BrowserRouter as Router, Routes, Route} from 'react-router-dom';
const App = () => {
const [itemsList, setItemsList] = useState(items)
const addRecipe = (recipeToAdd) => {
setItemsList(itemsList.concat([recipeToAdd]));
}
const removeItem = (itemToRemove) => {
setItemsList(itemsList.filter(a => a!== itemToRemove))
}
return (
<Router>
<Routes>
<Route path="/addRecipe" render={ ({history}) => {
return (<AddRecipe onAddRecipe={(newRecipe) => {
addRecipe(newRecipe);
history.push('/');
} } />);
} } />
</Routes>
</Router>
);
}
export default App;
jsx
Route
组件推荐答案从版本5到版本6有很大变化,不是component
和render
道具,而是传递给jsx文字而不是对反应组件(通过component
)或函数(viarender
)的引用的单一道具。
也不再有路线道具(history
、location
和match
),它们只能通过Reaction挂钩访问。此外,RRDv6也不再直接显示history
对象,而是将其抽象到navigate
函数后面,该函数可通过useNavigate
钩子访问。如果AddRecipe
组件是函数组件,它应该直接从钩子访问navigate
。如果它无法这样做,则解决方案是创建一个可以这样做的包装组件,然后使用更正的onAddRecipe
回调呈现AddRecipe
组件。
示例:
const AddRecipeWrapper = ({ addRecipe }) => {
const navigate = useNavigate();
return (
<AddRecipe
onAddRecipe={(newRecipe) => {
addRecipe(newRecipe);
navigate('/');
}}
/>
);
};
...
const App = () => {
const [itemsList, setItemsList] = useState(items);
const addRecipe = (recipeToAdd) => {
setItemsList(itemsList.concat([recipeToAdd]));
};
const removeItem = (itemToRemove) => {
setItemsList(itemsList.filter(a => a !== itemToRemove))
};
return (
<Router>
<Routes>
<Route
path="/addRecipe"
element={<AddRecipeWrapper addRecipe={addRecipe} />}
/>
</Routes>
</Router>
);
};
这篇关于REACT-ROUTER-DOM渲染道具不返回任何组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:REACT-ROUTER-DOM渲染道具不返回任何组件
猜你喜欢
- 400或500级别的HTTP响应 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01