我正在用typescript做一个redux工具包教程。但我是个打字新手。
我不知道这里有什么问题。请告诉我你的见解。
这是一条错误消息:TS2322:类型“number”不可分配给类型“void | State | writableddraft”。
import {CaseReducer, createSlice, PayloadAction} from "@reduxjs/toolkit";
type State = {
value: number
}
const increment: CaseReducer<State,PayloadAction<number>> = (state, action) => state.value + action.payload; // error line
export const counterSlice = createSlice({
name: 'counter',
initialState: {
value: 0
},
reducers: {
increment,
decrement: state => {
state.value -= 1
},
incrementByAmount: (state, action) => {
state.value += action.payload
},
},
})
export const {increment, decrement, incrementByAmount} = counterSlice.actions;
export default counterSlice.reducer;
CaseReduce er
返回值必须是val|State|Writable草稿
而您的表达式:
(state, action) => state.value + action.payload
是一个返回数字的函数。解决方案是在返回值之前添加void操作符,将其设置为未定义。
(state, action) => void (state.value += action.payload)
没有花括号的箭头函数是一个隐含返回。所以你正在返回状态。价值行动。有效载荷是一个数字。
Redux Toolkit允许您返回一个新状态(类型状态|Writable草稿
您可能想要修改草稿状态,因此您需要在函数体周围使用花括号,这样您就不会返回任何内容。
这三个函数都有效。从最少到最详细排序:
您可以直接使用加法赋值操作符=
const increment: CaseReducer<State,PayloadAction<number>> = (state, action) => {
state.value += action.payload;
}
const increment: CaseReducer<State,PayloadAction<number>> = (state, action) => {
state.value = state.value + action.payload;
}
const increment: CaseReducer<State,PayloadAction<number>> = (state, action) => ({
value: state.value + action.payload
});
如果存在除值之外的属性,则需要复制它们,如在传统Redux还原器中看到的
{…state,value:newValue}
。Redux工具包提供了选项1和2,因此您不必这样做。但是如果你选择返回一个新状态,那么它必须是一个完整的状态。
主要内容:Java16 打包工具的示例Java 14 引入了一个新的打包工具,基于 javapackager 的 jpackage。javapackager 是在 Java 8 中引入的,是 JavaFX 套件的一部分。由于 JavaFX 从 11 版本的 Java 中分离出来,因此该打包工具在标准产品中不再可用。 这个新工具旨在为操作系统提供本机安装程序。例如,Windows 的 msi/exe,MacOS 的 pkg/dmg,Li
主要内容:Java14 打包工具的示例Java 14 引入了一个新的打包工具,基于 javapackager 的 jpackage。javapackager 是在 Java 8 中引入的,是 JavaFX 套件的一部分。由于 JavaFX 从 11 版本的 Java 中分离出来,因此该打包工具在标准产品中不再可用。 这个新工具旨在为操作系统提供本机安装程序。例如,Windows 的 msi/exe,MacOS 的 pkg/dmg,Li
事实上,我在拉威尔是个新手,我正试图创建我的第一个项目。由于某些原因,我一直遇到这个错误(我甚至还没有开始编码) 我读到这与权限有关,但是chmod-R 775存储没有任何帮助。
问题内容: 实际上我不知道问题出在哪里。我认为这必须在创建TableLayout时进行。我不知道如何解决错误并使该应用程序正常工作。该程序显示错误“ java.lang.ArithmeticException:被零除”错误该程序具有EditText(edText),要求用户输入。它的类型是NUMBER。(这里r是edText的值)在EditText下方有一个Button(bt),它显示edText
我正在做一个laravel instragram克隆网站,但突然经过一些发展当我运行php工匠服务这个错误发生。 PHP警告:require(I:\LARAVEL\LARAVEL instagram clone\vendor\composer/。/ralouphie/getallheaders/src/getallheaders.PHP):无法打开流:第66行的I:\LARAVEL\LARAVEL
虽然我们已经了解了网络传输 Git 数据的常用方法(如 HTTP,SSH 等),但还有另外一种不太常见却又十分有用的方式。 Git 可以将它的数据“打包”到一个文件中。 这在许多场景中都很有用。 有可能你的网络中断了,但你又希望将你的提交传给你的合作者们。 可能你不在办公网中并且出于安全考虑没有给你接入内网的权限。 可能你的无线、有线网卡坏掉了。 可能你现在没有共享服务器的权限,你又希望通过邮件将