Redux將調度狀態變化的操作。 REDX中的動作類型命名約定是什麼?命名規則中的事件js
回答
周圍有社會上一些約定,我將列出我所知道的,並認爲那些在這裏有用:
最常見的約定是保持動作類型(「事件類型「)在
CONSTANT_CASE
。這避免拼寫錯誤,其中動作的類型爲
my_type
,但減速預期的類型my-type
或My_Type
。另一種非常常見的慣例是保存動作類型在一個單獨的文件中的常量,例如
var MY_ACTION_TYPE = 'MY_ACTION_TYPE';
,並從那裏使用它們。這樣也可以避免拼寫錯誤,所以您不希望某個操作的類型爲
MY_ACTION_TYP
。如果變量不存在,你會立即得到一個錯誤,特別是如果你正在發短信。一個不太常見,但imho非常有用,約定是的作用範圍爲一個項目和一個域。這種方法在Erik Rasmussen的"Ducks" proposal中得到了推廣,它規定了動作類型必須採用這種形狀:
var MY_ACTION_TYPE = 'appname/domain/MY_ACTIONTYPE'
。這可以避免兩個動作常量具有相同值的情況。例如。想象你有一個管理區域和麪向用戶的區域,並且都有表單分派
'CHANGE_USERNAME'
動作類型。這將使兩個減速器採取相同的行動,其中一個不應該選擇另一個。這可能發生在事故中,並且非常煩人追蹤。通過在應用程序和域名前添加它們,可以避免此問題:'appname/admin/CHANGE_USERNAME'
與'appname/user/CHANGE_USERNAME'
不同!
這是我所知道的和使用的約定,但我敢肯定,別人有更多的 - 你用什麼,在你的項目中發現有用嗎?
圍繞命名異步操作類型還有一些約定。如果你有一組動作來表示一個API調用來獲取用戶,你可以將它們分割成類似:
FETCH_USER_REQUEST
- 當你第一次發送的API調用FETCH_USER_SUCCESS
- 爲當API調用完成併成功返回的數據FETCH_USER_FAIL
- 爲當API調用失敗,一個錯誤回答:FETCH_USER_COMPLETE
- 有時在通話結束不顧身份
有一種新的模式解決這個問題,redux-auto。
它還原了還原劑成分的想法。而不是有一個代表你的reducer和創建個人行動功能的文件。
終極版,自動的方法有個別JS文件,表示對國家的每個動作/轉換和動態公開此作爲功能
例如
└── store/
├──user/
│ └── index.js
│ └── changeName.js
└──posts/
└── index.js
└── delete.js
文件夾現在從反正在你的應用程序,你可以寫
import actions from 'redux-auto'
...
actions.user.changeName({name:"bob"})
存儲/用戶/ changeName.js
export default function (user, payload) {
return Object.assign({},user,{ name : payload.name });
}
這就是!
如果您想要監聽第三方減速器中的redux操作。您可以將該功能用作鬆散質量檢查。
action.type == actions.user.changeName // "USER/CHANGENAME"
對於一些更高級的,你甚至可以看到,如果一個動作是由特定的減速擁有
// Returns true if it's an action specifically for user
if(action.type in actions.user)
你可以閱讀更多的project page
- 1. Dbset命名規則和類的命名規則
- 2. SharedSizeGroup命名規則
- 3. CSS的命名規則,
- 4. python是否有文件命名規則?
- 5. 命名規則解釋
- 6. Java類命名規則
- 7. 字段名稱的命名規則
- 8. 模型和控制器對軌道中不規則名詞的命名規則
- 9. 的.htaccess規則://那件事
- 10. 的Java分裂string的命名規則
- 11. CakePHP的型號命名規則
- 12. 忽略DTO的ReSharper命名規則
- 13. 命名AS3類的規則是什麼?
- 14. LESS CSS的命名規則上懸停
- 15. 命名錨的Apache重寫規則
- 16. 重疊的規則與命名組
- 17. 「deep sub-domained」組織的命名規則
- 18. 流星系列的命名規則
- 19. Android資源的命名規則
- 20. ReSharper的命名規則爲XAML命名空間
- 21. 重寫規則重命名一個URL
- 22. Twilio黑名單規則致命錯誤
- 23. 批量重命名匹配規則
- 24. 你如何重命名CSS規則?
- 25. StyleCop +高級命名規則,變量命名
- 26. 更改.so文件的Cython命名規則
- 27. 的CakePHP HABTM插件表命名規則(1.3)
- 28. 聯動匿名命名空間內的符號的規則命名空間
- 29. 永久重寫規則具有相同的文件名規則
- 30. 關於事件規則的SQL語句
我想指出的是作用域動作類型通過減速器加強** [錯誤動作映射1:1到特定減速器]的不正確**思路(https://github.com/reduxible/reduxible/issues/8)。事實上,一個動作可以(並且通常應該)由不同的減速器處理,反之亦然。 –
這是正確的,雖然這不會讓人們在不同的減速器中採取行動,但看起來可能如此。我會考慮如何編輯答案來反映這一點,或者你是否有想法?編輯:更新了答案 – mxstbr
我只是將其從'app/reducername/ACTION_TYPE'更改爲'app/modulename/ACTION_TYPE'或'app/domain/ACTION_TYPE'類似的東西,以使其清晰可見,動作創建者可能屬於一個組但行動不屬於特定的減速器。 –