我使用@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)
我对更改原始值数组或仅对象中的一个属性没有问题,但我不知道如何正确更改整个数组或数组中的特定对象。
我已经<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)