依赖cookie的组件内数据获取
In-component data fetching depending on cookie
我有这样一个组件:
class MyComponent extends React.PureComponent {
componentDidMount() {
const { params } = this.props.match
fetch(`/o/${params.id}`, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(r => r.json())
.then(json => {
this.props.setData(json)
})
}
render() {
const { t, payload, cookies } = this.props;
return <div>
{cookies.cookies.language}
{payload.myData}
</div>
}
}
因此,我在组件中获取数据。但重要的是,结果数据因我的一个 cookie 而异。因此,在更改我的 cookie 之后,我还想重新获取我的数据,但我不知道最优雅的方法是什么。我使用 react-cookie
库,所以现在每个 cookie 更改都会在我的视图中更新。但是当然在 render
方法中重新获取我的数据不是一个好主意,我认为 componentDidUpdate
也是一个不好的地方。那么,我该如何解决这个问题呢?
PS。我也用 Redux。
您需要有一个 componentDidUpdate()
,您可以在其中检查 cookie 是否已更改,然后进行提取调用。
会是这样的:
componentDidUpdate(prevProps) {
if (this.props.cookies !== prevProps.cookies) {
this.fetchData(this.props.cookies).then(...)
}
}
但看起来这个逻辑连同 componentDidMount()
应该在组件不纯的地方向上移动一个组件。
我有这样一个组件:
class MyComponent extends React.PureComponent {
componentDidMount() {
const { params } = this.props.match
fetch(`/o/${params.id}`, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(r => r.json())
.then(json => {
this.props.setData(json)
})
}
render() {
const { t, payload, cookies } = this.props;
return <div>
{cookies.cookies.language}
{payload.myData}
</div>
}
}
因此,我在组件中获取数据。但重要的是,结果数据因我的一个 cookie 而异。因此,在更改我的 cookie 之后,我还想重新获取我的数据,但我不知道最优雅的方法是什么。我使用 react-cookie
库,所以现在每个 cookie 更改都会在我的视图中更新。但是当然在 render
方法中重新获取我的数据不是一个好主意,我认为 componentDidUpdate
也是一个不好的地方。那么,我该如何解决这个问题呢?
PS。我也用 Redux。
您需要有一个 componentDidUpdate()
,您可以在其中检查 cookie 是否已更改,然后进行提取调用。
会是这样的:
componentDidUpdate(prevProps) {
if (this.props.cookies !== prevProps.cookies) {
this.fetchData(this.props.cookies).then(...)
}
}
但看起来这个逻辑连同 componentDidMount()
应该在组件不纯的地方向上移动一个组件。