/** 1.如果在renderTitle,renderContent里面,这样总数据谁都能修改,不安全
* 改进
* 1.规定一个专门修改数据的方法,如果想修改数据只能走这个方法
*
* action代表一个命令对象,就是一个普通的js对象,起码需要一个字段控制命令类型type,其他字段随意
*
* */const CHANGE_FONT_SILE='CHANGE_FONT_SILE';//设置一个闭包,把变量保护起来,通过返回值调用function createStore() {
let appState={
fontSize:'26px',
title:{
text:'标题',
color:'red'
},
content:{
text:'类容',
color:'green'
}
} //保护变量被修改,深克隆
let getState=()=>JSON.parse(JSON.stringify(appState)); //改变变量的方法
let dispatch=(action)=>{
switch(action.type){
case CHANGE_FONT_SILE:
appState.fontSize=action.fontSize;
default:
return;
}
} //返回出去的修改和取值的接口
return{
getState,
dispatch
}
}
let store=createStore();//取值函数function renderTitle() {
let titleEle = document.querySelector('#title');
titleEle.innerHTML = store.getState().title.text;
titleEle.style.color = store.getState().title.color;
titleEle.style.fontSize = store.getState().fontSize;
}function renderContent() {
let titleEle=document.querySelector("#content");
titleEle.innerHTML=store.getState().content.text;
titleEle.style.color=store.getState().content.color;
titleEle.style.fontSize=store.getState().fontSize;
}function renderApp() {
renderTitle();
renderContent()
}//修改appState里面初始值,单独一个修改文件store.dispatch({type:CHANGE_FONT_SILE,fontSize:'30px'})
renderApp(); 0
0
相关文章
Bootstrap 5 轮播图实现自动播放 + 循环完毕后自动暂停
如何修复 JavaScript 中因元素 ID 不匹配导致的事件绑定失效问题
如何将 UTC 时间准确转换并显示为浏览器本地时间
如何在 PG-Promise 中正确传递数组参数实现 IN 查询
如何将 UTC 时间安全转换并显示为浏览器本地时间
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
C++ 高级模板编程与元编程
本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。
17
2026.01.23
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程








