Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

分享给大家我遇到问题(实际上是我自己菜) #134

Open
watchingfun opened this issue Dec 22, 2021 · 3 comments
Open

分享给大家我遇到问题(实际上是我自己菜) #134

watchingfun opened this issue Dec 22, 2021 · 3 comments

Comments

@watchingfun
Copy link

watchingfun commented Dec 22, 2021

工具是个好工具,但是我太菜了,我在这里写下我在使用过程中遇到的一些问题,方便跟我一样的菜鸟

  1. 首先model 和 store 的定义和使用:
    只要exprot 的是new 实例,那import的都是同一个实例,由此可以达到全局data存储的功能

  2. 这个框架的store,model
    其实没必要单独写一个model,大家可以把data,method全写在store里,作者给的贪吃蛇demo里,每次页面load后,都要init,其实就是把model里的data复制到store里,如果大家的微信小程序应用其实不考虑什么复用迁移平台,那么就不用多弄个model
    辣鸡微信

  3. 这个框架的主要功能update
    这个之前遇到一个问题,实际上是我自己不清楚update里的实现,直接想当然拿来就用,然后发现页面并没有更新
    export function update(view, callback) { const patch = diffData(view.data, view._westorePrevData) view.setData(patch, callback) view._westorePrevData = clone(view.data) }
    首先会比对历史数据和当前数据,得到更改后的数据再去调用微信的setData, 那么我不生效的原因就是在发送网络请求前修改了data后没有update,因为需要update存储一下历史值,不然update取的历史值不对,diff后的数据patch为空,那么自然没有setData更新视图

  4. store的bind
    贪吃蛇demo是在onload里store.bind(name, viewThis), 然后我看README.md里写的是可以省略name,直接bind(viewThis),然后我就这么写了,但是因为onload在每次页面加载都执行,bind不加name的情况就是westore内部用数组维护viewThis,然后update时遍历数组来update,但是这里没有根据页面来做去重覆盖,所以会每次进去页面调用bind时,那个数组列表就会越来越长。所以还是加名字bind来使用好点。

@dntzhang
Copy link
Collaborator

总结的不错

@tomerry
Copy link

tomerry commented Feb 16, 2022

你的确够菜的,这么菜的一个框架,你竟然用出了这么多问题

@watchingfun
Copy link
Author

你的确够菜的,这么菜的一个框架,你竟然用出了这么多问题

前端菜狗,第一次搞微信小程序

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants