Coder Social home page Coder Social logo

weappx's Introduction

weappx

NPM version Build Status Coverage Status NPM downloads Dependencies Status code style: prettier

升级方案

如果有好的建议欢迎 issue 讨论 👏👏👏

Install

开发环境支持安装 npm 依赖的话,直接使用命令安装即可

npm install weappx

原生小程序开发可以通过拷贝 git 项目中 packages/xxx/dist 中的 bundle 文件到实际项目中进行引用

框架接入DEMO

Feature

  • 上手简单,仅需要了解 4 个 api
  • 更易用的 action 派发方式
  • 更简单的数据处理copy-on-write
  • 独立存在的事件中心
  • 强大的 hook 机制

Links

License

MIT

weappx's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

weappx's Issues

weappx-plugin-loading 问题

已经捕获了异常还是会出现 Uncaught (in promise) 警告,
如果不使用 app.use(createLoading()) 则不会出现

store:
image

image

image

image

setStore 是都每个页面都要调用

wepy环境中,只要有Model是不是每个页面都需要调用 const store = app.start() setStore(store)? 有没有全局设置store的办法,比如在app.wpy里面

在支付宝小程序中使用会出错

我是用原生的 weappx-weapp 和 weappx,出现问题的代码是在page里直接修改了 state 的值,这段代码在微信小程序是没有报错的。调试后发现,其他的直接修改 state 的代码也是有同样的问题,state 里的value 值调用了Object.freeze,Object.seal 或者是 Object.preventExtensions 把对象设置为不可修改。

app.dispatcher.searchOption.setParams();
let option = this.data.searchOption.params;
option.page = 0;
Cannot assign to read only property 'page' of object '#<Object>'

这是因为这个库本来就不允许外部直接修改 state,还是因为支付宝小程序的原因?

wepy自带的connect太难用

import { connect } from 'wepy-redux'
@connect({
ordersn: state => state.orderdetail.ordersn,
isLoading: state => state.orderdetail.isLoading,
loginStatus: state => state.global.loginStatus,
userInfo: state => state.global.userInfo,
})

而在dva里所有的这样写就完事了

import { connect } from 'react-redux'
@connect(({ orderdetail, global }) => ({ ...orderdetail, ...global }))

orderdetail和global是namespace

亲,有什么好的解决办法吗? 如果这个页面使用的state比较多,每一个都要定义一行,很繁琐,dva直接就把这个namespace展开了

从2.2.3版本API,已经推荐lifetimes来定义生命周期,造成state无效

从2.2.3版本API,已经推荐lifetimes来定义生命周期,connector中的connectComponent没有对lifetimes做处理,造成如果组件的生命周期函数写在lifetimes中,state无效。改成如下就可以:

function connectComponent(states = {}, setData = 'setData') {
states = normalizeMap(states);
return function(ComponentOptions) {
let unSubscribe = null;

// 生命周期函数,可以为函数,或一个在lifetimes段中定义的方法名

const lifetimes = ComponentOptions.lifetimes || {};
const attached = lifetimes.attached || ComponentOptions.attached;
const detached = lifetimes.detached || ComponentOptions.detached;

lifetimes.attached && delete lifetimes.attached;
lifetimes.detached && delete lifetimes.detached;

const onStateChange = function() {
  const newStates = mapState(states);
  let hasChanged = false;
  Object.keys(newStates).forEach(k => {
    const newV = newStates[k];
    if (!isEqual(this.data[k], newV)) {
      // 不相等
      hasChanged = true;
    }
  });
  hasChanged && this[setData](newStates);
};

return {
  ...ComponentOptions,
  data: Object.assign(ComponentOptions.data || {}, mapState(states)),
  lifetimes: Object.assign(ComponentOptions.lifetimes || {}, {
    attached() {
  	const store = getStore();
  	unSubscribe = store.subscribe(onStateChange.bind(this));
  	onStateChange.call(this);
  	attached && attached.apply(this, arguments);
    },
    detached() {
  	unSubscribe && unSubscribe();
  	unSubscribe = null;
  	detached && detached.apply(this, arguments);
    },
})
};

};
}

多个model文件,后面model里的store会覆盖前面model里的

你好,我用微信原生框架开发小程序,用的weappx-weapp,在定义了多个model文件后(每个文件了都执行了 const app = weappx() ),这样会造成先加载的model里的数据丢失,报找不到相关的state,weappx()不是单例的吗?有没有多个model的demo呢?

actions ?

你好。

文档没有 actions 的实用示例,我这样写是对的吗,按照文档,在 actions 下的函数中获取{ dispatcher, state },但返回函数的参数为 undefined。

`
...
mutations: {},

actions: {
getData(obj) {
console.log(obj); // undefined
}
}
...
`

能从redux无缝切换么

因为现在的项目中已经使用了redux,所以想问下有没有什么操作能让wepyx和redux共存,共用一个store

setups在onLaunch前执行

我定义了个store文件,在store里统一管理状态,然后在app里引用,发现setups在onLaunch前执行

相关代码

store.js
------------------------------------------
import weappx from 'weappx'
import {setStore} from 'wepy-redux'
import user from './models/user'

const app = weappx()
app.models([user])
const store = app.start()
setStore(store)

export default app
user.js
------------------------------------------
const state = {
}
const mutations = {
}
const actions = {
}
const setups = function () {
  console.log(1)
}

export default {
  namespace: 'user',
  state,
  mutations,
  actions,
  setups
}
app.js
------------------------------------------
import store from './store'
export default class extends wepy.app {
  onLaunch () {
    console.log(2)
  }
}

先输出了1,再输出了2。
请问怎么保证先执行onLaunch

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.