未捕获的类型错误:dispatcher.useSyncExternalStore 不是函数

2024-01-06

我正在尝试使用 useSelector 和 useDispatch 更改 bulma 模型的状态
像这样

      const isState = useSelector((state) => state.isActiveState)

Model.js 是:

import React from 'react'
import "../CSS/Careers.css"
import { useSelector, useDispatch } from 'react-redux';
import { stateCheck } from '../Redux/ActiveState'

export default function Modal() {

      const isState = useSelector((state) => state.isActiveState)
  
      

      const dispatch  = useDispatch()

    
  return (
    <div>
      <div
        style={{ padding: "0rem 0.5rem 0rem" }}
        className={`modal ${isState}`}    //this should change the state to 'is-active'
      >
        <div onClick={() => dispatch(stateCheck())} className="modal-background"></div>
        <div style={{ borderRadius: "1.5rem" }} className="modal-card">
          <header
            style={{
              borderBottom: "1px solid white",
              backgroundColor: "#F2F5FF",
            }}
            className=""
          >
            <div style={{ padding: "17px 19px 20px" }} className="is-flex ">
              <p
                style={{ color: "#7209B7" }}
                className="modal-card-title has-text-weight-semibold"
              >
                Apply For Job
              </p>
              <button
                onClick={() => dispatch(stateCheck())}
                className="delete"
                aria-label="close"
              ></button>
            </div>
          </header>
          <section
            style={{ backgroundColor: "#F2F5FF" }}
            className="modal-card-body"
          >
            <div style={{ padding: "0rem 3rem 0rem" }} className="field">
              <div className="control has-icons-left ">
                <input
                  className="input "
                  // style={{ width: "100%" }}
                  type="text"
                  placeholder="Name"
                />
                <span className="icon is-small is-left">
                  <i className="fas fa-user"></i>
                </span>
              </div>
            </div>

            <div style={{ padding: "0rem 3rem 0rem" }} className="field">
              <div className="control has-icons-left ">
                <input className="input " type="email" placeholder="Email" />
                <span className="icon is-small is-left">
                  <i className="fas fa-envelope"></i>
                </span>
              </div>
            </div>
            <div
              style={{ padding: "0rem 3rem 0rem" }}
              className="file is-medium"
            >
              <label style={{ border: "3px sold #7209B7" }} className="">
                <input className="file-input" type="file" name="resume" />
                <span
                  style={{ backgroundColor: "#F2F5FF" }}
                  className="file-cta"
                >
                  <span className="file-icon">
                    <i
                      style={{ color: "#7209B7" }}
                      className="fas fa-upload"
                    ></i>
                  </span>
                  <span style={{ color: "#7209B7" }} className="file-label">
                    Choose a file…
                  </span>
                </span>
              </label>
            </div>
            <p
              style={{
                padding: "0rem 3rem 0rem",
                fontSize: "15px",
                color: "#fcb01a",
              }}
            >
              Select CV or Resume
            </p>
          </section>
          <footer
            style={{
              borderTop: "1px solid white",
              textAlign: "center",
              height: "20%",
              backgroundColor: "#F2F5FF",
            }}
            className=" has-text-centered"
          >
            <div
              style={{ paddingTop: "9px", textAlign: "center" }}
              className=""
            >
              <button style={{ backgroundColor: "#fcb01a" }} className="button">
                Submit
              </button>
            </div>
          </footer>
        </div>
      </div>

    </div>
  )
}

我的 redux 文件 ActiveState.js 是:

import { createSlice } from '@reduxjs/toolkit'

export const ActiveState = createSlice({
    name: 'isActiveState',
    initialState: {
      value: 0,
    },

    reducers: {
        stateCheck: (state) => {
          // Redux Toolkit allows us to write "mutating" logic in reducers. It
          // doesn't actually mutate the state because it uses the Immer library,
          // which detects changes to a "draft state" and produces a brand new
          // immutable state based off those changes

          if (state.value == 0){ 
               state.value = 'is-active';
            //   console.log(state.value)        


            }
            else{
                state.value = 0;
                // console.log(state.value)        
      

            }

        }
     
      },
    })

    export const { stateCheck } = ActiveState.actions;

    export default ActiveState.reducer;

store.js 是:

import { configureStore } from '@reduxjs/toolkit'
import ActiveState from './components/Redux/ActiveState'

export default configureStore({
  reducer: {

    stateChecker : ActiveState,

  },
})

index.js 是:

import React from 'react';
import ReactDOM from 'react-dom';
import './components/CSS/index.css';
import App from './App';
import store from './store'
import { Provider } from 'react-redux'

ReactDOM.render(
  <React.StrictMode>
    <Provider store={store}>   
       <App />
    </Provider>

  </React.StrictMode>,
  document.getElementById('root')
);

我已将模型添加到我想要使用它并触发我使用的模型的组件中:

onClick={() => dispatch(stateCheck())}

调度工作正常我已经检查过 console.log

问题是当我尝试使用以下命令获取 redux 状态时:

      const isState = useSelector((state) => state.isActiveState)

我在控制台中收到以下错误:

Uncaught TypeError: dispatcher.useSyncExternalStore is not a function

我正在关注 redux 官方文档:
https://react-redux.js.org/tutorials/quick-start https://react-redux.js.org/tutorials/quick-start


I have tried everything, checked imports, checked syntax and keywords, and checked every answer on StackOverflow but I'm still getting this error.

请帮助我,我已经被困在这里差不多一天了。


发生这种情况是因为react-redux React 18 尚不支持(反应和反应本机)。

降级react-redux到以前的版本将解决您的问题。

对于我来说,在我的 React Native 项目中,我降级了:

"react-redux": "^8.0.1",

to

"react-redux": "^7.2.8",
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未捕获的类型错误:dispatcher.useSyncExternalStore 不是函数 的相关文章

随机推荐

  • 如何在不停止管道的情况下在多个 rtsp 视频流之间切换 [无缝流媒体]

    我使用 5 个 ip 摄像机 每个摄像机为我提供 5 个 RTSP 流 我选择这些 RTSP 视频流中的任何一个 并将它们与我的麦克风 音频 RTSP 流源 混合并将其广播到我的 RTMP 服务器 我尝试进行无缝流传输 这意味着当相机到相机
  • Node.js 应用程序中出现“EACCES”错误

    今天我通过卸载旧版本来更新节点版本 我最近安装的版本是 4 5 0 LTS 安装后 当我尝试安装新的 npm 时 它不起作用并给出以下错误 C Users myuser npm install g yo npm ERR Windows NT
  • 通过 VBA 传递 Python 参数

    我写了一个python脚本 需要使用VBA调用 我编写了一个 python 脚本 可以解析 pdf 将我需要的数据存储在变量中 并写入预制的 Excel 工作表以用这些值填充单元格 我已经成功地能够调用该脚本并使用以下代码运行它 Sub R
  • Chrome 和 Android 中的 Web SQL 存储限制?

    因此 我正在编写一个 Web 应用程序 需要在离线 Web SQL 数据库中存储约 40MB 的离线数据 它需要在 Chrome 桌面 Safari 桌面和移动 和 Android 浏览器中工作 现在我知道这些浏览器支持 Web SQL 并
  • 如何在 RHEL Linux 服务器上安装 Cargo?

    我尝试在 RHEL 服务器上安装 Cargo curl https sh rustup rs sSf sh 但完成后 我得到回复 cargo bash cargo command not found 有其他安装方式吗 首先启用rhel 7
  • 如何在共享框架中为 XCTest 创建公共扩展?

    例如 我从不使用以下描述XCTestCase expectation 所以我想使用一个函数来为其提供默认值 并通过命名清楚地表明我正在初始化期望 因为您不能真正使用初始化程序XCTestExpectation 但如果扩展不在测试目标中 则无
  • 在 jboss 独立运行时事务无法继续 STATUS_MARKED_ROLLBACK

    有人遇到以下问题吗 我能够使用 jboss 工具在 eclipse 内的 jboss 中成功构建 部署和运行我的 javaee6 应用程序 但是当我们将其部署到另一台独立运行的服务器上时 我们遇到了错误 我在 eclipse 所在的同一台机
  • 片段活动未找到类异常 android

    我正在研究用于姜饼操作系统的片段活动 当我尝试在姜饼模拟器上运行应用程序时 由于以下原因 应用程序被强制关闭ClassNotFound错误 我在下面提供我的主要片段活动代码 和平的帮助将是值得赞赏的 package com example
  • 如何修复docker或重新安装它?

    我已经执行了这个命令 但现在 docker 不工作 如何正确修复 或重新安装 docker sudo rm rf var lib docker aufs 我已经尝试去做 apt get install reinstall docker 但没
  • 在旧版 .NET 平台上使用 .NET Core 包

    我正在使用 VS 中的新 类库 包 模板之一创建 NuGet 包 我想知道 有什么方法可以使用 PCL 中的包吗 not使用 NET Core 例如 我有一个包裹 Enu 具有以下project json title Enu project
  • 调用 Tumblr 帖子转发 api 时收到 401(未授权)

    我在调用 Tumblr 帖子转发 api 时收到 401 状态 其他 tumblr api 工作正常 我关注了 Stackoverflow 的一些链接 但无法使用它 当尝试发布到 tumblr 博客时不断收到 401 https stack
  • ArrayObject, getIterator();

    我试图理解什么getIterator 是的 我将解释 我所知getIterator是我们调用以包含外部迭代器的方法 问题是 getIterator 包含它有自己的方法关闭认为看起来相同的是迭代器接口 但它不能是一个接口 它可以是类 但我试图
  • 使用 Swiftmailer 发送多个附件

    我正在创建一个允许上传多个文件的表单 然后将表单字段值和附件通过电子邮件发送到特定地址 我正在使用 Swiftmailer 生成这些电子邮件 我知道如何使用 Swiftmailer 附加一个文件 但不知道如何附加多个文件 有谁知道使用 Sw
  • UIWebView 未使用 ARC 释放所有活动字节

    我目前正在 iOS 5 1 中构建一个使用 ARC 的导航控制器应用程序 我经常需要显示网页 我制作了一个 Web 查看器 它只是一个 UIWebView 两侧有一些自定义内容 当用户看完页面后 他们点击后退按钮 这将释放与自定义 Web
  • 查找多个重叠矩形的并集 - OpenCV python

    我有几个包含单个对象的重叠边界框 但它们在某些地方重叠最少 作为一个整体 它们包含了整个对象 但是 openCV 的 groupRectangles 函数不会返回包含该对象的框 我拥有的边界框以蓝色显示 我想要返回的边界框在这里以红色显示
  • C#:当存在多个类型参数时,为什么泛型类型推断不起作用?

    这是两个示例 这工作正常 void Main var list Queryable ProjectTo typeof Projection public static class QueryableExtensions public sta
  • 负载均衡器后面的 SilverStripe

    我有一个 SilverStripe 实例在 AWS 负载均衡器后面的两台服务器上运行 为了共享会话信息 我正在运行 Elasticache Redis 服务器 我将我的 php 会话存储信息设置为 ini set session save
  • 使用 JavaScript 将 JSON 文件转换为 CSV

    我正在尝试使用 JavaScript 将 JSON 文件转换为可以在 Excel 中打开的 csv 我拥有的 function exportToCsv filename rows var processRow function row va
  • 如何调试 Node.JS 子进程?

    我正在尝试调试使用以下命令创建的子 Node JS 进程 var child require child process child fork dirname task js 问题是 当在 IntelliJ WebStorm 中运行时 父进
  • 未捕获的类型错误:dispatcher.useSyncExternalStore 不是函数

    我正在尝试使用 useSelector 和 useDispatch 更改 bulma 模型的状态像这样 const isState useSelector state gt state isActiveState Model js 是 im