感谢提示,如今我认为我遇到的问题已经解决(不包括诞生的问题)——
在后续的排查出错原因中,找到了对这种处理的描述“重新定义 setState 方法来取消异步操作”:
https://www.cnblogs.com/jlj9520/p/7371955.html 中对重写 setState 操作得到了确认,
https://blog.csdn.net/GoldenLegs/article/details/86509806 一文提到了该处理是“阻止异步操作”,因为个人能力有限无法辨别该说法是否正确,故从 momocraft 的“報錯信息沒了不等於 "解決" 了”出发,继续寻找更稳妥的处理方法。
https://www.jianshu.com/p/8be320d982a8 里的方法二中找到了,“设置一个 flag,当 unmount 的时候重置这个 flag”
落实到楼一提到的迷你版 redux 项目里便是将 constructor 时 store.subscribe(this.handleStoreChange)订阅的 handleStoreChange 方法做一个组件是否卸载的判断 handleStoreChange(){
if(this._isMounted === true){
this.setState(store.getState())
}
}
[说来惭愧也是技不如人] 原本在查到上述重写 setState 操作前有考虑过这个 flag 法子。
不过我当时是在 export default 之上声明了个全局变量 flag 然后初次渲染时 true 卸载前 false,结果报错依旧。最后成功的处理里,这个 flag 是声明在组件的 this 上。
有路过的好心人可以指出两者在此例中区别的话劳烦赐教一下,
当然阁下如果没有雅兴那我只好寄望日后的学习里渐渐接触真相了 orz