使用带反冲的反作用路由器



我在同一个应用程序中有"react router dom"one_answers"反冲"。

在路线内更新反冲状态的正确方法是什么?

const ItemRouter = ()=> { 
const [selectedItemId, setSelectedItemId] = useRecoilState(itemIdSelected); 
return ( 
<Route
key="items"
path="/item/:itemId/edit"
render={({ match }) => (
// TODO: i want to save itemId to recoil state;  
// const itemId = match.params.itemsId;
// setSelectedItemId(itemId); 
<ItemEditor whId={match.params.itemsId} />
)}
/>
)}

您可以简单地拥有一个依赖于useEffect的组件来更新反映路由参数的Recoil原子。然后,其他原子/选择器可以读取该状态(如果ItemEditor组件的所有状态都处于反冲状态,则它甚至不需要接受itemId作为道具(

const itemIdSelectedState = atom({
key: 'itemIdSelectedState',
default: null,
});
const ItemRoute = ({ itemId }) => {
const setItemIdSelected = useSetRecoilState(itemIdSelectedState);
useEffect(() => setItemIdSelected(itemId), [itemId]);
return <ItemEditor whId={itemId} />;
};
const ItemRouter = () => (
<Route
key="items"
path="/item/:itemId/edit"
render={({ match }) => <ItemRoute itemId={match.params.itemId} />}
/>
);

相关内容

  • 没有找到相关文章

最新更新