reactjs - “找不到
我有一个 takeLatest() 传奇函数,它调用一个名为 postDeliverySubmitSaga() 的传奇,我想将参数传递给它。
我这样定义我的函数:
export function* postDeliverySubmitSaga({
问题描述
我有一个 takeLatest() 传奇函数,它调用一个名为 postDeliverySubmitSaga() 的传奇,我想将参数传递给它。
我这样定义我的函数:
export function* postDeliverySubmitSaga({
payload: any
}: ReturnType<typeof setDeliverySubmit>) {
console.log(payload);
}
export function* deliveryDataSaga() {
yield takeLatest(setDeliverySubmit.toString(), postDeliverySubmitSaga);
}
但我收到以下错误:
Cannot find name 'payload'. TS2304
102 | payload: any
103 | }: ReturnType<typeof setDeliverySubmit>) {
> 104 | console.log(payload);
| ^
105 | }
106 |
107 | export function* deliveryDataSaga() {
编辑:
我试图像这样定义传奇。它编译得很好,但是当我尝试获取有效负载对象的成员(在本例中为payload.userToken
)时,它会抛出一个错误,指出有效负载是类型unknown
:
export function* postDeliverySubmitSaga({
payload
}: ReturnType<typeof setDeliverySubmit>) {
const userToken = payload.userToken;
console.log(userToken);
}
Object is of type 'unknown'. TS2571
102 | payload
103 | }: ReturnType<typeof setDeliverySubmit>) {
> 104 | const userToken = payload.userToken;
| ^
105 | console.log(userToken);
106 | }
107 |
编辑2:
如果我这样做:
export function* postDeliverySubmitSaga({
payload
}: {
payload: IDeliverySubmitData;
}) {
console.log(payload);
}
然后我得到以下编译错误:
No overload matches this call.
The last overload gave the following error.
Argument of type 'ActionFunctionAny<Action<unknown>>' is not assignable to parameter of type 'TakeableChannel<unknown>'.
Property 'take' is missing in type 'ActionFunctionAny<Action<unknown>>' but required in type 'TakeableChannel<unknown>'. TS2769
110 |
111 | export function* deliveryDataSaga() {
> 112 | yield takeLatest(setDeliverySubmit, postDeliverySubmitSaga);
| ^
113 | }
114 |
函数fetchSingleUser总是返回 'undefined' 因为你在 catch 之后没有返回任何东西(发生错误之后)。您只定义成功的返回值。
但是为什么会发生错误,因为const res 不包含Responses.users[0]
.
简单的解决方案:
更改let result = { UserId: 'segf876seg876', Age: 33, Name: 'Paul' }
以满足代码Responses.users[0]
为
const result = {
Responses: {
users: [{ UserId: 'segf876seg876', Age: 33, Name: 'Paul' }],
},
};
注意:如果不更改变量值,请使用const 。
解决方案
那是因为从参数payload
中解包any
并分配给名为.
键入参数与解构分配新名称之间的混淆。
只需删除: any
export function* postDeliverySubmitSaga({
payload
}: ReturnType<typeof setDeliverySubmit>) {
console.log(payload);
}
不相关,redux-saga 足够聪明,可以识别toString
动作创建者,所以观察者可以只是:yield takeLatest(setDeliverySubmit, postDeliverySubmitSaga);
推荐阅读
- c - 我应该如何修复错误“比数据参数更多的 '%' 转换”?
- tensorflow - 为什么 Keras 模型仅使用 imagenet 权重实例化?
- html - 带有 Bootstrap 和 Django 的轮播
- ios - SwiftUI:API URL 获取失败
- android - 如何让 Webview 超链接在 webview 应用程序而不是浏览器中打开
- javascript - DOM 元素转换为整数并将它们转换为总时间量 - 小时/分钟 parseFloat
- c# - 如何使用 foreach 循环生成文本框以在 C# Windows 窗体中显示问题列表
- spring-boot - 健康指标Spring集成测试NotFound失败
- sql-server - 使用 HASHBYTES 函数对数据进行哈希处理
- c++ - 我无法获得以下代码的输出
我有一个 takeLatest() 传奇函数,它调用一个名为 postDeliverySubmitSaga() 的传奇,我想将参数传递给它。
我这样定义我的函数:
export function* postDeliverySubmitSaga({
问题描述
我有一个 takeLatest() 传奇函数,它调用一个名为 postDeliverySubmitSaga() 的传奇,我想将参数传递给它。
我这样定义我的函数:
export function* postDeliverySubmitSaga({
payload: any
}: ReturnType<typeof setDeliverySubmit>) {
console.log(payload);
}
export function* deliveryDataSaga() {
yield takeLatest(setDeliverySubmit.toString(), postDeliverySubmitSaga);
}
但我收到以下错误:
Cannot find name 'payload'. TS2304
102 | payload: any
103 | }: ReturnType<typeof setDeliverySubmit>) {
> 104 | console.log(payload);
| ^
105 | }
106 |
107 | export function* deliveryDataSaga() {
编辑:
我试图像这样定义传奇。它编译得很好,但是当我尝试获取有效负载对象的成员(在本例中为payload.userToken
)时,它会抛出一个错误,指出有效负载是类型unknown
:
export function* postDeliverySubmitSaga({
payload
}: ReturnType<typeof setDeliverySubmit>) {
const userToken = payload.userToken;
console.log(userToken);
}
Object is of type 'unknown'. TS2571
102 | payload
103 | }: ReturnType<typeof setDeliverySubmit>) {
> 104 | const userToken = payload.userToken;
| ^
105 | console.log(userToken);
106 | }
107 |
编辑2:
如果我这样做:
export function* postDeliverySubmitSaga({
payload
}: {
payload: IDeliverySubmitData;
}) {
console.log(payload);
}
然后我得到以下编译错误:
No overload matches this call.
The last overload gave the following error.
Argument of type 'ActionFunctionAny<Action<unknown>>' is not assignable to parameter of type 'TakeableChannel<unknown>'.
Property 'take' is missing in type 'ActionFunctionAny<Action<unknown>>' but required in type 'TakeableChannel<unknown>'. TS2769
110 |
111 | export function* deliveryDataSaga() {
> 112 | yield takeLatest(setDeliverySubmit, postDeliverySubmitSaga);
| ^
113 | }
114 |
函数fetchSingleUser总是返回 'undefined' 因为你在 catch 之后没有返回任何东西(发生错误之后)。您只定义成功的返回值。
但是为什么会发生错误,因为const res 不包含Responses.users[0]
.
简单的解决方案:
更改let result = { UserId: 'segf876seg876', Age: 33, Name: 'Paul' }
以满足代码Responses.users[0]
为
const result = {
Responses: {
users: [{ UserId: 'segf876seg876', Age: 33, Name: 'Paul' }],
},
};
注意:如果不更改变量值,请使用const 。
解决方案
那是因为从参数payload
中解包any
并分配给名为.
键入参数与解构分配新名称之间的混淆。
只需删除: any
export function* postDeliverySubmitSaga({
payload
}: ReturnType<typeof setDeliverySubmit>) {
console.log(payload);
}
不相关,redux-saga 足够聪明,可以识别toString
动作创建者,所以观察者可以只是:yield takeLatest(setDeliverySubmit, postDeliverySubmitSaga);
推荐阅读
- c - 我应该如何修复错误“比数据参数更多的 '%' 转换”?
- tensorflow - 为什么 Keras 模型仅使用 imagenet 权重实例化?
- html - 带有 Bootstrap 和 Django 的轮播
- ios - SwiftUI:API URL 获取失败
- android - 如何让 Webview 超链接在 webview 应用程序而不是浏览器中打开
- javascript - DOM 元素转换为整数并将它们转换为总时间量 - 小时/分钟 parseFloat
- c# - 如何使用 foreach 循环生成文本框以在 C# Windows 窗体中显示问题列表
- spring-boot - 健康指标Spring集成测试NotFound失败
- sql-server - 使用 HASHBYTES 函数对数据进行哈希处理
- c++ - 我无法获得以下代码的输出