小编Żyw*_*ywy的帖子

类型“MyType”不可分配给类型“WritableDraft<MyType>”

我使用@reduxjs/toolkit并且我的状态包含:allSlides: ISlide[];

当我尝试改变任何事情时,allSlides比如前。

setAllSlides(state, action: PayloadAction<ISlide[]>) {
  state.allSlides = action.payload;
},
storeNewSlide(state, action: PayloadAction<ISlide>) {
  state.allSlides.push(action.payload);
},
Run Code Online (Sandbox Code Playgroud)

我收到 TS 错误

Type 'ISlide' is not assignable to type 'WritableDraft<ISlide>'
Run Code Online (Sandbox Code Playgroud)

我对更改原始值数组或仅对象中的一个属性没有问题,但我不知道如何正确更改整个数组或数组中的特定对象。

typescript immer.js redux-toolkit

10
推荐指数
1
解决办法
1万
查看次数

useEffect 中的 inputFile.current.click() 在 safari 中不起作用

我已经<input type="file" />并且想要触发.click()该输入。在 chrome、firefox、edge 中一切正常,但在 safari 中存在问题。

当我点击按钮触发时 inputFile.current.click()- 它起作用了。但是当它发生在 useEffect/useLayoutEffect 内部时 - 它不起作用(我尝试添加超时,但也没有帮助)。

重现问题的工作示例:https://codesandbox.io/s/react-hooks-counter-demo-forked-49n2t ?file=/src/index.js

尽可能少的代码来解决问题

import React, { useCallback, useState, useEffect, useLayoutEffect, useRef } from 'react';
import { useRecoilState } from 'recoil';
import { requestedNewCanvasObjAtom } from '../SlidesState/slidesAtoms';

const Slide: React.FC = () => {
  const [trigger, setTrigger] = useState(false);
  const [requestedNewCanvasObj] = useRecoilState(requestedNewCanvasObjAtom);
  const inputFile = useRef(null);

  useLayoutEffect(() => {
    console.log('IT IS HERE WHEN EXPECTED BUT IT DOES NOT WORK TOO'); …
Run Code Online (Sandbox Code Playgroud)

javascript safari reactjs recoiljs

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