export const asyncAction = (data: {
param: string
}): AppThunk => async (dispatch) => {
try {
const apidata = await api({ param });
} catch (err) {
console.log(err);
}
};
我收到此错误“速记属性'param'的范围内不存在任何值。要么声明一个,要么提供一个初始化程序。”
答案 0 :(得分:0)
如果要解构param
属性,则必须将解构后的对象语法放在参数类型定义的左侧,如下所示:
export const asyncAction = ({
param,
}: {
param: string;
}): AppThunk => async (dispatch) => {
// ...
但是在这种情况下,如果一个参数确实是仅具有param
属性的对象,则解构无济于事,因为您稍后将创建具有param
属性的对象以进行传递到api
:
export const asyncAction = (data: { param: string; }): AppThunk => async (dispatch) => {
try {
const apidata = await api(data);
} catch (err) {
console.log(err);
}
// ...
};
答案 1 :(得分:0)
您的externalscope方法具有一个名为data的参数,该参数具有param属性。在内部作用域方法中,您尝试不使用data.param
来访问param。如果应为:
export const asyncAction = (data: {
param: string
}): AppThunk => async (dispatch) => {
try {
const apidata = await api({ param: data.param });
} catch (err) {
console.log(err);
}
};
答案 2 :(得分:0)
在api({ param });
中,您尝试访问存储在param
中的data
。您需要先从data
“解压缩”它,例如:const param = data.param;
,然后才能使用它。
export const asyncAction = (data: {
param: string
}): AppThunk => async (dispatch) => {
const param = data.param;
try {
const apidata = await api({ param });
} catch (err) {
console.log(err);
}
};