考虑 nextjs 应用程序中的以下简单页面:
type MyProps = {
myData: string[]
}
export const getServerSideProps: GetServerSideProps<MyProps> = async ({ req, res }) => {
return { props: {myData: calcData()} }
}
function MyComponent(props: MyProps) {
return <div>{props.myData}</div>
}
在 props 中准备数据的最佳实践是什么?在我的情况下,我需要根据服务器端代码中不存在的标准(客户端浏览器中的当前语言,使用 next-i18next)对数据进行排序。我可以像这样使用状态
function MyComponent(props: MyProps) {
const [sortedProps] = useState({myData: props.myData.sort(...)})
return <div>{sortedProps.myData}</div>
}
但这对我来说听起来并不是“React 的意图”。也许useEffect(() => {...}, [])
运行一次是更好的选择?如果是,我如何记住结果数据useEffect
?useRef
?
编辑:还是useMemo
要走的路?