【发布时间】:2020-06-05 02:09:41
【问题描述】:
我还没有完全理解 React 的 Server Side Rendering。
两个示例之间发生了哪些不同的行为?
第一
function Test() {
const context = useContext(AuthContext)
const { user } = context
return (
user ? <h1>User</h1> : <h1>No User</h1>
)
}
export default withApollo({ ssr: true })(Test)
===> 发生错误文本内容不匹配。服务器:“无用户”客户端:“用户”
第二
function Test() {
const context = useContext(AuthContext)
const [ user, setUser ] = useState(null)
useEffect(() => {
setUser(context.user)
}, [])
return (
user ? <h1>User</h1> : <h1>No User</h1>
)
}
export default withApollo({ ssr: true })(Test)
===> 没有错误。
有什么不同?为什么第一个出错而第二个没有?在 Postman 中,当我请求此组件路由以检查服务器端响应时,两者的响应相同(无用户)。
有什么意义?我知道 useEffect 只在客户端执行,但是第一个也更新为 No User to User 怎么样。水化点,渲染点是什么时候?
【问题讨论】:
标签: reactjs next.js server-side-rendering