如何在反应中发送动态道具
how to send dynamic props in react
<Route exact path="/product/:id" element={<ProductPage />} prod_id={this.id}/>
这里我有一条路线,我的意图是在我的组件中获取路径的 ID,以便我可以触发该功能并获取产品的详细信息
显然 prod_id={this.id}
对我不起作用,也应该不起作用写这篇文章只是为了展示我的想法
一旦我在我的组件中获得这个 ID,我就可以触发这个功能
export const getSingle=(id) => async(dispatch)=>{
try {
dispatch({type:SINGLE_PRODUCT_REQUEST})
const {data} = await axios.get(`/api/v1/products/detail:${id}`)
dispatch({
type:SINGLE_PRODUCT_SUCCESS,
payload:data,
})
} catch (error) {
dispatch({
type:SINGLE_PRODUCT_FAIL,
payload:error.response.data.message,
})
}
}
获取产品详细信息并填写必填字段
你可以从 useParams()
挂钩中获得 id
。
路线代码
<Route exact path="/product/:id" element={<ProductPage />} />
在 React 组件中,从 react-router-dom
导入 useParams
钩子
并使用
获取 ID
let { id } = useParams();
您不能将 props 传递给 Route 并在目标组件中访问它们。这不是 React 中的工作方式。
如果你想从 URL 访问参数,你可以使用钩子 - useParams()
export const getSingle= () => async(dispatch)=>{
try {
dispatch({type:SINGLE_PRODUCT_REQUEST})
const params: { id: string } = useParams();
const {data} = await axios.get(`/api/v1/products/detail:${params.id}`)
dispatch({
type:SINGLE_PRODUCT_SUCCESS,
payload:data,
})
} catch (error) {
dispatch({
type:SINGLE_PRODUCT_FAIL,
payload:error.response.data.message,
})
}
}
对于非功能性组件,您必须从 props 访问参数
class Example extends Component {
render() {
const { id } = this.props.match.params;
return (
<div>ID : { id }</div>
);
}
}
<Route exact path="/product/:id" element={<ProductPage />} prod_id={this.id}/>
这里我有一条路线,我的意图是在我的组件中获取路径的 ID,以便我可以触发该功能并获取产品的详细信息
显然 prod_id={this.id}
对我不起作用,也应该不起作用写这篇文章只是为了展示我的想法
一旦我在我的组件中获得这个 ID,我就可以触发这个功能
export const getSingle=(id) => async(dispatch)=>{
try {
dispatch({type:SINGLE_PRODUCT_REQUEST})
const {data} = await axios.get(`/api/v1/products/detail:${id}`)
dispatch({
type:SINGLE_PRODUCT_SUCCESS,
payload:data,
})
} catch (error) {
dispatch({
type:SINGLE_PRODUCT_FAIL,
payload:error.response.data.message,
})
}
}
获取产品详细信息并填写必填字段
你可以从 useParams()
挂钩中获得 id
。
路线代码
<Route exact path="/product/:id" element={<ProductPage />} />
在 React 组件中,从 react-router-dom
导入 useParams
钩子
并使用
let { id } = useParams();
您不能将 props 传递给 Route 并在目标组件中访问它们。这不是 React 中的工作方式。
如果你想从 URL 访问参数,你可以使用钩子 - useParams()
export const getSingle= () => async(dispatch)=>{
try {
dispatch({type:SINGLE_PRODUCT_REQUEST})
const params: { id: string } = useParams();
const {data} = await axios.get(`/api/v1/products/detail:${params.id}`)
dispatch({
type:SINGLE_PRODUCT_SUCCESS,
payload:data,
})
} catch (error) {
dispatch({
type:SINGLE_PRODUCT_FAIL,
payload:error.response.data.message,
})
}
}
对于非功能性组件,您必须从 props 访问参数
class Example extends Component {
render() {
const { id } = this.props.match.params;
return (
<div>ID : { id }</div>
);
}
}