【发布时间】:2020-01-07 05:27:49
【问题描述】:
我正在使用ReactContext 和Hooks 在单击按钮时显示和隐藏Modal。
以下是我的上下文代码
const setPrivacyPolicyModalVisibility = dispatch => {
return ({visible}) => {
visible
? dispatch({type: 'enablePrivacyPolicyModalVisibility'})
: dispatch({type: 'disablePrivacyPolicyModalVisibility'});
};
};
相同的reducer代码如下
case 'enablePrivacyPolicyModalVisibility':
return {...state, ...{enablePrivacyPolicy: true}};
case 'disablePrivacyPolicyModalVisibility':
return {...state, ...{enablePrivacyPolicy: false}};
我班上的一些设置代码
const {state, setPrivacyPolicyModalVisibility} = useContext(Context);
const [privacyVisibility, setPrivacyVisibility] = useState(false);
点击按钮我调用以下代码
<TouchableOpacity
onPress={() => {
setPrivacyVisibility(true);
console.log(`${privacyVisibility}`);
setPrivacyPolicyModalVisibility({privacyVisibility});
}}.....
如您所见,我正在控制台记录 privacyVisibility 值,但它总是错误的,我无法理解
以下是我在组件中隐藏或显示模态的代码
{state.enablePrivacyPolicy ? (
<SettingsPrivacyModal visible={true} />
) : (
<SettingsPrivacyModal visible={false} />
)}
模态代码是正确的,因为我尝试将默认值设置为 true 只是为了检查模态是否可见然后它可以工作,但是单击按钮时状态值不会改变,我无法看到模态该值始终为 false
【问题讨论】:
标签: react-native react-hooks react-context