提供PARAMS到純函數我有以下代碼:反應路由器V4 - 如何使用「組件」屬性
const CatalogContainer =() => (
<Match
pattern="/catalog/:id"
exactly
render={({ params }) => (
<Redirect to={`/catalog/${params.id}/titles`} />
)}
/>
)
但ESLint拋出以下警告由於=>
,這是(據我所知)不好的做法,因爲它在每次調用時創建了render
函數的新參考,我不想那樣做。
警告JSX道具不應該使用箭頭功能反應/ JSX-沒有綁定
所以,我想重構這個使用專用而又簡單的組件,如:
const DefaultRedirect = (params) => (
<Redirect to={`/catalog/${params.id}/titles`} />
);
但是,我很難弄清楚如何使用它。
首先,我認爲我需要使用component
而不是render
屬性,但我不太確定,到目前爲止我還沒有找到正確的文檔。 (編輯:https://react-router.now.sh/Match這裏是文檔爲v4)
我嘗試了幾件事,包括以下,但它不起作用。
<Match
pattern="/catalog/:id"
exactly
component={DefaultRedirect({ params })}
/>
我找到了幾個例子,但所有的人都用React.createClass
,我寧可不要因爲使用const
似乎是新的「最好」的方式爲無狀態組件做事使用。
一個可能的解決方案是使用擴展React.Component的類。但感覺不對。 (和ESLint是顯示錯誤它)
元器件應寫爲一個純函數
class DefaultRedirect extends React.Component {
render() {
const { params } = this.props;
return (
<Redirect to={`/catalog/${params.businessMid}/titles`} />
);
}
}
大約從render
方法該文檔:(https://react-router.now.sh/Match)
您可以傳入一個函數,以便在位置n匹配。你的渲染函數將被傳遞給組件的相同道具調用。 這允許方便的內聯匹配渲染和包裝。
也許很方便,但不被認爲是一個很好的做法。
有沒有辦法使用純函數來做到這一點?