I belong to : Experience
之前项目组的前端用的是angualr1.x版本,给我的感觉就是angular啥都有,只要注入依赖就可以用。
工作闲暇之余会自己学习新知识,react很火,但是公司没有react的项目实操,所以自己找了网上一个比较适合入门的项目来练手,下面是我在边敲边学的过程中体验到的不同点。
而react和vue就是轻量级的,要什么就去找,找来再用。
觉得vue比起angular更像react。vue和react很像,但是比react细腻。
mapState
mapMutations
mapGetters
mapActions
连接
const store = createStore(
combineReducers(reducer),
);
ReactDOM.render(
<Provider store={store}>
{router}
</Provider>,
document.getElementById('app')
);
store = new Vuex.Store({
state:
mutations
actions
getters
modules:})
new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
reducer和vuex的modules类似,可以用来划分不同模块
// reducer
function User (state = JSON.parse(Tool.localItem('User')), action) {
switch (action.type) {
case SIGNIN_SUCCESS: //登录成功
Tool.localItem('User', JSON.stringify(action.target));
return action.target;
case SIGNIN: //退出
Tool.removeLocalItem('User');
return null;
default:
return state;
}
}
/**省略。。。。。。*/
export default { IndexList, Topic, MyMessages, UserView, User }
export default new Vuex.Store({
state: {
user: null
},
mutations: {
setUser (state, payload) {
state.user = payload
}
},
actions,
getters,
modules: {
cart,
products,
login}
})
action就是一个对象,具体处理方法在reducer里面实现
export function signinSuccess(target){
return {
type:'signinSuccess',
target
}
};
mutation是方法,由action调用
// mutations
const mutations = {
[types.RECEIVE_PRODUCTS] (state, { products }) {
state.all = products
},
[types.ADD_TO_CART] (state, { id }) {
console.log('form product')
state.all.find(p => p.id === id).inventory--
}
}
用connect方法
const mapStateToProps = (state) => {
return {
User: state.User
}
}
const mapDispatchToProps = (dispatch) => {
return {
signinSuccess: (user) => {
dispatch(signinSuccess(user))
}
}
}
export default connect(mapStateToProps,mapDispatchToProps)(SignIn);
只需要在组件里面映射
mapState
mapMutations
mapGetters
mapActions
export default {
computed: mapGetters({
products: 'allProducts'
}),
methods: mapActions([
'addToCart'
]),
action是唯一修改state的方法
Action用dispatch调用
reducer, 和vuex的modules相似
组件调用都是dispatch action
mutation是唯一修改state的方法,类似React-redux的action
除了mutation还有action,
mutation用于同步操作,用commit调用
action用于异步操作,用dispatch调用
Modules,和redux的reducer相似
有getters
有namespaced
组件调用都是dispatch action