You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
最终总结,由于使用了 dark mode,所以每次切换mode的时候,页面会重新render并且控制mode的css class会修改名字。所以此时的用于生产div的blogListFn函数需要更新(使用此时的css class)。
但是我这里因为只监听了[missions, blogs, bookmarks]这三组 raw data 是否异步获取到。此时点击切换 mode ,并不会触发 loadTabs,所以tabs会崩掉
// for tabs: 传入3组 raw dataconstloadTabs=(missions,blogs,bookmarks)=>{// 使用 raw data 生产我们的 divletmissionsTabData=missionsListFn(missions)letblogTabData=blogListFn(blogs)letbookmarksTabData=bookmarksListFn(bookmarks)// put div into ProfileTabs.jssetcontents([{label: `Blogs (${blogs.length||0})`,'value': blogTabData||"no Blogs",'button': blogAddIcon},{label: `Missions (${missions.length||0})`,'value': missionsTabData||"oops Missions are gone",'button': missionAddIcon},{label: `Bookmarks (${bookmarks.length||0})`,'value': bookmarksTabData||"oops no Bookmarks"},])}// ======= 修改前 =======useEffect(()=>{loadTabs(missions,blogs,bookmarks)},[missions,blogs,bookmarks])// 异步取得3组 raw data [missions, blogs, bookmark],当任一变化时,重新生产我们的tabs// ======= 修改后 =======useEffect(()=>{loadTabs(missions,blogs,bookmarks)},[missions,blogs,bookmarks,classes])// 加入监听classes,因为切换mode的时候,css的class名字后缀会随机生产// 其中 classes: 包含此页面所有class的css style
FreeTitle网页的profile修改过程-踩坑记录
dark 模式下的profile,中间为3个tabs
修改profile界面
模仿了 Instagram 的个人主页,下面分了3个tabs,点击切换tabs,下面的内容为card形式
踩坑记录
使用2个file,分别是
Profile.js
和ProfileTabs.js
,前者用于拿数据,后者用于render我们生成的tab有3个部分踩坑
如何解决切换
dark mode
时,tab格式崩溃(css class 丢失)最终总结,由于使用了 dark mode,所以每次切换mode的时候,页面会重新render并且控制mode的css class会修改名字。所以此时的用于生产div的
blogListFn
函数需要更新(使用此时的css class)。但是我这里因为只监听了[missions, blogs, bookmarks]这三组 raw data 是否异步获取到。此时点击切换 mode ,并不会触发
loadTabs
,所以tabs会崩掉下面是
ProfileTabs.js
的return部分的代码谈谈优化
经历了2个过程
blogReady
state,在异步获取到blog raw data后,blogReady
状态标记为true。接着当3个raw data全部为true时,运行loadTabs()
,render我们的数据。loadTabs()
,即做到了加载好一个tab便生成一个移动端 light 模式下的情况,3个tabs吸顶
⬅ 返回我的Blog
The text was updated successfully, but these errors were encountered: