reactjs - 组件未包装
问题描述
我试图弄清楚这里有什么问题。我不断收到相同的错误消息,即“错误:找不到 react-redux 上下文值;请确保组件包装在 <Provider> 中”。
import 'tailwindcss/tailwind.css';
import '../styles/global.css';
import Router from 'next/router';
import ProgressBar from "@badrap/bar-of-progress";
import React, { useEffect, useState } from "react";
import { auth } from '../firebase';
import { useDispatch, useSelector, Provider } from "react-redux";
import { store } from '../src/app/store'
import { login, logout, selectUser } from "./userSlice";
function MyApp({ Component, pageProps }) {
const user = useSelector(selectUser);
const dispatch = useDispatch();
useEffect(() => {
const unsubscribe = auth.onAuthStateChanged(userAuth => {
if(userAuth) {
dispatch(
login({
uid: userAuth.uid,
email: userAuth.email
})
);
} else {
dispatch(logout);
}
});
return unsubscribe;
}, []);
return (
<Provider store={store}>
<Component {...pageProps}/>
</Provider>
)
}
export default MyApp
解决方案
MyApp 不在里面,<Provider store={store}>
这就是为什么它不能从useSelector
. 组件允许其Provider
子级获取和设置 Redux 存储的值。
所以你必须像这样将你的提供者提升到<MyApp />
Component for Redux 之上:
<Provider store={store}>
<MyApp />
</Provider>
推荐阅读
- angular - ngModel 在 Angular 英雄之旅教程中是如何工作的?
- javascript - 如何将切换按钮集成到 Bootstrap 3.3.7?
- python - 如何读取存储在文本文件中的字符串的值,然后转换为整数,并对值进行数学运算?
- node.js - 如何制作 Nodejs 可分发的命令行应用程序
- excel - 查找单元格内容并替换第二个匹配项
- c# - 从存储过程读取 C# XML 输出从 TEMP 表 SQL Server 返回 null
- prolog - 如何反转列表并将所有指定值替换为其他值?
- python - Python - 除非指定,否则使用 pytest 跳过测试
- django - 是否可以在 Django 中将第二个 slug 添加到 URL 路径?
- spring - 将对象发送到服务时出现 java.lang.NullPointerException