1

Redux ソース コードのこの行でわかるように、アクションにはtypeプロパティが必要です。ソース コード リポジトリの実際のtype例では、プロパティが宣言されていない、このようなアクションがあります。

function fetchUser(login) { 
10   return { 
11     [CALL_API]: { 
12       types: [ USER_REQUEST, USER_SUCCESS, USER_FAILURE ], 
13       endpoint: `users/${login}`, 
14       schema: Schemas.USER 
15     } 
16   } 
17 } 

ここCALL_APIで参照されるのは JavaScript シンボルです

export const CALL_API = Symbol('Call API')

補足として、Mozilla サイトから、配列ブラケットを使用してシンボルにアクセスしているようです。

var sym = Symbol("foo");
var obj = {[sym]: 1};

それで、redux コードに戻ると、明示的な型なしでアクションを処理するミドルウェアは、CALL_API によって作成されたプロパティにアクセスするようです...

export default store => next => action => { 
84   const callAPI = action[CALL_API] 
85   if (typeof callAPI === 'undefined') { 
86     return next(action) 
87   }  function fetchUser(login) { 
10   return { 
11     [CALL_API]: { 
12       types: [ USER_REQUEST, USER_SUCCESS, USER_FAILURE ], 
13       endpoint: `users/${login}`, 
14       schema: Schemas.USER 
15     } 
16   } 
17 } 

上記の最初のコードに戻ると、このように呼び出し API の周囲から配列ブラケットを削除すると、

 function fetchUser(login) { 
    10   return { 
    11     CALL_API: { 

「アクションには未定義の「タイプ」プロパティがない可能性があります」というエラーが表示されます。

質問: たとえば、fetchUser 関数でのシンボルの (正しい) 使用は、アクションの型プロパティの要件をどのように満たしますか?

4

1 に答える 1