视图中的错误处理
似乎Mithril不处理视图函数中抛出的错误.
我个人的经验是,如果在视图中抛出错误,UI不会得到适当更新. 不仅组件未能更新,整个应用也未能更新.
□ 内容
在这个例子中,在`ErrorComp.view'中出现错误。 错误阻止了整个应用程序的UI更新,因此按钮标签没有更新.
贾斯 var 数据={ 旗帜: 真实 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
var 错误comp={ 视图: 函数 (){ control.log(data.flag) (中文(简体) ). 返回( data. flag ) ? `无出错'。 数字 : 未定义的. error (中文(简体) ). {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
var App = { (中文(简体) ). 视图: 函数 (){ 返回 [ m(错误comp), m("divi","将按钮点击下方"), m('按钮',{点击: () * * * 数据.flag=!data.flag}, 切换旗:" + 数据. flag (中文(简体) ). [ . ] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
m.mount( document.get ElementById ('app'), App) (中文(简体) ).
(https://jsfidle.net/andraaspar/v2dL1cLw/1/) (中文(简体) ).
□步骤
1. 点击按钮。
□ 预期
`ErrorComp ' 不提供,而是更新的其余应用程序(用按钮标签显示`虚假')。
□ 实际
UI不更新.
□ 建议
Mithril 可以捕捉出错, 使一个空字符串成为组件应该所在的地方( 并记录出错) 。 或许可以支持`errorView'方法(如果定义的话)。
在组件中发生错误太容易了。 例如,如果从AJAX中装入的数据路径的一部分未被定义. 我认为,保持UI的其余部分的更新,将导致更强大的应用. 我作为一个开发者可以信任的 将在野外工作。
我知道我可以绕着这个工作,而且我知道。 但我认为Mithril能做得更好, 并且更亲切一些.内容来源: MithrilJS/mithril.js