在我的next.js应用程序中,我有一个包含两个组件的页面:A
和B
中的至少一个。
// page.tsx
import A from './A'
import B from './B'
const Page = () => {
return (
<div>
<A />
<B />
</div>
)
}
export default Page
// A.tsx
'use client';
import { useState } from 'react'
const A = () => {
const [count, setCount] = useState(0)
return (
<div>
<p>you clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>click me</button>
</div>
)
}
export default A
// B.tsx
'use client';
import { useState } from 'react'
const B = () => {
const [count, setCount] = useState(0)
return (
<div>
<p>you clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>click me</button>
</div>
)
}
export default B
假设我想在服务器上静态呈现Page
。但是,我也想在客户端实现状态。同步A
和B
的状态,同时保持Page
作为服务器组件的最佳方法是什么?
1条答案
按热度按时间mzmfm0qo1#
您可以使用上下文API来实现这一点。您可以在客户端组件中呈现您的上下文提供程序,并将其注入到页面中:
字符串
上下文可能看起来像这样:
型
最后,您可以从子组件访问和修改相同的上下文计数,从而有效地共享状态。例如,在组件
A
中,而不是使用:型
您可以用途:
型