小编Rod*_*ves的帖子

错误:不变失败:在路径“emailReducer.emails.0”中的调度之间检测到状态突变

我收到有关改变状态的错误消息,但 Redux Toolkit 的目的是改变状态,所以我很困惑......

该错误来自,我将新电子邮件添加到调用usingaddNewEmail的数组中,第二个参数是常规字符串。prevEmailsuseSelector

import { createSlice } from "@reduxjs/toolkit";
import { AppThunk } from "./store";

const initialState = {
   emails: [],
};

export const emailSlice = createSlice({
   name: "email",
   initialState,
   reducers: {
      setEmails: (state, action: any) => {
         state.emails = action.payload;
      },
   },
});

export const { setEmails } = emailSlice.actions;

export const addNewEmail = (prevEmails: any, email: string): AppThunk => (
   dispatch
) => {
   const allEmails = prevEmails.push(email);
   dispatch(setEmails(allEmails));
};

export default …
Run Code Online (Sandbox Code Playgroud)

redux redux-toolkit

3
推荐指数
2
解决办法
8129
查看次数

React 地图不会随着状态变化而重新渲染

你们能帮我解决这个问题吗?我正在映射此emails状态,但是当我从数组中删除电子邮件时,handleDelete不会map重新渲染。当我console.log(emails)正确时,电子邮件就会被正确删除。

import { TextField, Chip, Avatar } from "@material-ui/core";
import React, { useState } from "react";
import "./Email.css";


export default function Email() {
   const [value, setValue] = useState<string>();
   const [emails, setEmails] = useState<string[]>([]);
   
   function onTextChange(e: any) {
      setValue(e.target.value.replace(" ", ""));
      if (value?.includes(",")) {
         let separated = e.target.value.split(",");
         const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
         const newEmails = separated.filter((val: any) => re.test(val));

         if (newEmails[0] !== undefined) {
            emails.push(newEmails[0]);
            setEmails(emails);
            console.log(emails);
         }

         setValue("");
      }
   }

   function handleDelete(email: …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

3
推荐指数
1
解决办法
2463
查看次数

Material UI 和 Next.js 设置

似乎设置 Next.js 和 MUI 的“方法”是删除服务器端样式,所以我在 _app.tsx 中完成了它

import '../styles/globals.css';
import type { AppProps } from 'next/app';
import { useEffect } from 'react';

function MyApp({ Component, pageProps }: AppProps) {
  useEffect(() => {
    const jssStyles = document.querySelector('#jss-server-side');
    if (jssStyles) {
      jssStyles.parentElement?.removeChild(jssStyles);
    }
  }, []);
  return <Component {...pageProps} />;
}

export default MyApp;
Run Code Online (Sandbox Code Playgroud)

也在 _document.tsx 中做到了

import { ServerStyleSheets } from '@mui/styles';
import Document, { Head, Html, Main, NextScript } from 'next/document';
import React from 'react';

export default class MyDocument extends Document …
Run Code Online (Sandbox Code Playgroud)

reactjs next.js

3
推荐指数
1
解决办法
2677
查看次数

标签 统计

reactjs ×2

javascript ×1

next.js ×1

redux ×1

redux-toolkit ×1