NextJS 动态路由,重新渲染特定的子组件
NextJS Dynamic Routing, re-render specific Child Components
我有 index.js 页面,位于
pages/posts/index.js
我可以用 Link 呈现此页面:
<Link href={`/posts`} />
这是我的 index.js 页面:
function mainComponent({props}) {
<>
<MainComponent>
<ChildComponent1/>
<ChildComponent2 props={propsValue}/>
<MainComponent/>
</>
}
现在,通过 NextJs 的动态路由,我想使用查询参数并调用 api 来获取
的 propsValue
<ChildComponent2 props={propsValue}>
我使用动态路由,link:
<Link href={/posts/${dynamic-pageId}} />
我可以仅使用从 API 获得的值 propsValue 重新渲染 ChildComponent2 吗?
注意:我没有物理文件/pages/posts/${dynamic-pageId},我想要使用 /pages/posts/index.js,因为我也必须在这个 hirerachy 中渲染:
<>
<MainComponent>
<ChildComponent1/>
<ChildComponent2 props={propsValue}/>
<MainComponent/>
在NextJs中可以吗?
当 props 参数更改时,组件将使用更改后的 props 进行渲染。
现在,由于 MainComponent 使用 children
,我们无法阻止它在没有昂贵计算的情况下重新渲染,这无论如何都是一种开销。
但是我们可以通过将 ChildComponent1
实现为像
这样的 PureComponent 来防止重新渲染
class ChildComponent1 extends React.PureComponent {}
如果您的 ChildComponent1 是一个功能组件,您可以使用 React.memo 来防止在组件没有任何变化的情况下重新渲染
const ChildComponent1 = React.memo((props) => {
// logic here
})
我有 index.js 页面,位于
pages/posts/index.js
我可以用 Link 呈现此页面:
<Link href={`/posts`} />
这是我的 index.js 页面:
function mainComponent({props}) {
<>
<MainComponent>
<ChildComponent1/>
<ChildComponent2 props={propsValue}/>
<MainComponent/>
</>
}
现在,通过 NextJs 的动态路由,我想使用查询参数并调用 api 来获取
的 propsValue<ChildComponent2 props={propsValue}>
我使用动态路由,link:
<Link href={/posts/${dynamic-pageId}} />
我可以仅使用从 API 获得的值 propsValue 重新渲染 ChildComponent2 吗?
注意:我没有物理文件/pages/posts/${dynamic-pageId},我想要使用 /pages/posts/index.js,因为我也必须在这个 hirerachy 中渲染:
<>
<MainComponent>
<ChildComponent1/>
<ChildComponent2 props={propsValue}/>
<MainComponent/>
在NextJs中可以吗?
当 props 参数更改时,组件将使用更改后的 props 进行渲染。
现在,由于 MainComponent 使用 children
,我们无法阻止它在没有昂贵计算的情况下重新渲染,这无论如何都是一种开销。
但是我们可以通过将 ChildComponent1
实现为像
class ChildComponent1 extends React.PureComponent {}
如果您的 ChildComponent1 是一个功能组件,您可以使用 React.memo 来防止在组件没有任何变化的情况下重新渲染
const ChildComponent1 = React.memo((props) => {
// logic here
})