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渲染道具不返回任何组件
基础教程推荐
猜你喜欢
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 直接将值设置为滑块 2022-01-01