Ven*_*sky 7 reactjs react-native react-navigation react-hooks
我正在使用,react-navigation并且有一个动态标头,所以我正在使用setParams并在标题中获取它。
const MyComponent = ({navigation}) => {
useEffect(() => {
const { setParams, state } = navigation
const { params = {} } = state
const { description } = params
setParams({ headerTitle: description })
}, [])
return (...)
}
MyComponent.navigationOptions = ({ navigation }) => ({
title: navigation.getParam('headerTitle')
})
Run Code Online (Sandbox Code Playgroud)
这里的问题是我只想执行setParams一次(所以我使用[]),但是得到警告(eslint(react-hooks/exhaustive-deps))并说我需要添加navigation到依赖项数组。
如果我添加navigation到依赖项数组,它将成为无限循环。
setParam更新=> navigation调用=> setParam更新=> navigation并继续...
如何setParam只调用一次,并避免相应地正确响应钩子规则?
import React, { useRef, useEffect } from 'react';
const MyComponent = ({ navigation }) => {
const { state } = navigation;
const { params = {} } = state;
const description = useRef(params.description);
const setParams = useRef(navigation.setParams);
useEffect(() => {
setParams.current({ headerTitle: description.current });
}, [description, setParams]);
return (...);
}
MyComponent.navigationOptions = ({ navigation }) => ({
title: navigation.getParam('headerTitle')
})
Run Code Online (Sandbox Code Playgroud)
我没有测试过这个,但看起来它应该可以工作。
参考这里是useRef 文档。
| 归档时间: |
|
| 查看次数: |
370 次 |
| 最近记录: |