5

我尝试将我的项目迁移到Next.js具有 SSR(服务器端渲染)功能的框架。这是我的简单页面:

class Example extends React.Component {
  static getInitialProps() {
    // api getting data. Need authentication data under local storage
  }
  render() {
    return <div>{this.props.data}</div>;
  }
}

我遇到的问题是:我希望我的数据来自getInitialProps第一个(这就是 SSR 的目的)。但是在发送时,我需要有关后端 API 的用户信息。但是在这个函数中,渲染发生在服务器上,所以我无法从本地存储中获取数据。你怎么能解决这个问题。

谢谢

4

2 回答 2

1

您可以将调用localStorage放入反应组件生命周期方法中,例如componentDidMount然后setState()将结果放入。

这不是很好,但会起作用。

请注意,这显然不会使用 SSR。

于 2018-10-18T20:45:18.100 回答
0

这对我有用:

const USER = 'user'
const URL = 'http://www.example.com/user'

// here you can also use isServer
if (req) {
    const {data: user} = await Axios.get(URL) 
    localStorage.setItem(USER, JSON.stringify(user))
} else {
    const user = await JSON.parse(localStorage.getItem(USER))
}
于 2020-05-10T05:28:28.330 回答