在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ react學(xué)起來好頭疼,很多概念好像沒搞清楚

react學(xué)起來好頭疼,很多概念好像沒搞清楚

全家桶

    "react": "^16.2.0",
    "react-dev-utils": "^5.0.0",
    "react-dom": "^16.2.0",
    "react-redux": "^5.0.7",
    "react-router-dom": "^4.2.2",
    "redux": "^3.7.2",
    "redux-thunk": "^2.2.0",

這都是什么???

Vue相比之下友好很多,大部分看個教程就能開始用。

狀態(tài)管理

Vue官方已經(jīng)分好了4個操作,數(shù)據(jù)存放以及操作一目了然。
然后現(xiàn)在學(xué)react跟著某個教程寫的

import axios from 'axios';
import {getRedirectPath} from '../util.js';

const REGISTER_SUCCESS = 'REGISTER_SUCCESS'
const ERROR_MSG = 'ERROR_MSG'

const initState = {
  redirectTo: '',
  isAuth: false,
  msg: '',
  user: '',
  pwd: '',
  type: '',
}


// reducer
export function user(state = initState, action) {
  switch(action.type) {
    case REGISTER_SUCCESS:
      return {...state, msg:'',redirectTo:getRedirectPath(action.payload) , isAuth:true, ...action.payload}
    case ERROR_MSG:
      return {...state, isAuth:false, msg:action.msg}
    default:
      return state
  }
}

function registerSuccess(data) {
  return {type:REGISTER_SUCCESS,payload:data}
}

function errorMsg(msg) {
  return {msg, type:ERROR_MSG}
}

export function regisger({user, pwd, repeatpwd, type}) {
  if (!user || !pwd || !type) {
    return errorMsg('用戶名密碼必須輸入')
  } else if (pwd !== repeatpwd) {
    return errorMsg('密碼和確認(rèn)密碼不同')
  }
  return dispatch => {
    axios.post('/user/register', { user, pwd, type }).then(res => {
      if (res.status === 200 && res.data.code === 0) {
        dispatch(registerSuccess({user,pwd,type}))
      } else {
        dispatch(errorMsg(res.data.msg))
      }
    })
  }
}

dispatch到底在干嘛?

組件傳值

Vue:父向子:子組件數(shù)據(jù)名="父組件數(shù)據(jù)名"
子向父@子組件傳遞的事件名="父組件定義的事件" this.$emit('子組件傳遞的事件名', 數(shù)據(jù))
react: this.props.history.push('/register')你這個props里面存了什么?為什么一下有history函數(shù)一下又有this.props.msg這種字符串?

教程引入那么多插件每個插件里導(dǎo)入的函數(shù)是做什么的?
你告訴我這里用了這個插件的這個函數(shù),但是他到底是干什么的?要解決什么問題?

Vue一些東西一句代碼解釋清楚了,react想寫筆記不知道從哪里下手,一股強(qiáng)耦合的味道
我現(xiàn)在總感覺缺了什么東西,概念好像沒搞清楚。有大神提點(diǎn)一下嘛?

回答
編輯回答
青檸

初學(xué)的時候不要用redux。


曾經(jīng)有人說過這樣一句話。

"如果你不知道是否需要 Redux,那就是不需要它。"

Redux 的創(chuàng)造者 Dan Abramov 又補(bǔ)充了一句。

"只有遇到 React 實(shí)在解決不了的問題,你才需要 Redux 。"

2017年7月15日 07:25
編輯回答
祉小皓
2017年5月6日 22:24
編輯回答
互擼娃

可以去看react官網(wǎng) react的api很少 也沒什么指令亂七八糟的東西 純js 數(shù)據(jù)控制視圖 邏輯不放在視圖里
至于插件基本也就redux router那幾個 學(xué)習(xí)成本很低

2018年5月23日 04:02
編輯回答
清夢

建議跟著官方教程走,國內(nèi)總結(jié)的教程說實(shí)在的,有時候上來就全家桶但是又不講清楚各個都干嘛的是有些頭疼。

比如里邊的 redux 實(shí)際上并不是 react 獨(dú)家的東西,它是個 JavaScript 狀態(tài)容器,提供可預(yù)測化的狀態(tài)管理,只是對 react 做了支持而已。

router、thunk之類的都是遇到一些場景問題了才需要引入的,剛開始學(xué)沒必要上來就全齊活。

一句即可: npm install -g create-react-app

2018年3月31日 05:41
編輯回答
拮據(jù)

我記得當(dāng)初我剛開始學(xué)react的時候,感覺很熟悉,看了一個下午就可以寫出一個todolist了,因?yàn)橹拔覍W(xué)過一些vue,雖然也只是做了一些簡單的demo,但是react的很多概念在vue中都有,所以我不覺得一個會vue的人會學(xué)不來react。
個人覺得,學(xué)習(xí)編程真的不能本末倒置,理論在前,實(shí)戰(zhàn)在后,先別急著看react-router和redux這些東西,就像vue還沒學(xué)好就直接上vue-router和vuex,這樣能學(xué)好嗎?
建議先從阮一峰的react教程開始看起,把這些基本概念搞懂。

2017年1月29日 18:48
編輯回答
喵小咪

雖說已經(jīng)選擇了最佳答案,但是剛剛看到,也來回到一下,既是提供一點(diǎn)不同的觀點(diǎn),也是對我自己的一點(diǎn)總結(jié)。

首先,我是從react轉(zhuǎn)到vue的,醉醉深切的觀點(diǎn)就是,react比vue難,但是react比vue功能更強(qiáng)大,更好用。vue的局限性太大了,

解答一下樓主的疑問點(diǎn):
1。狀態(tài)管理,redux的狀態(tài)管理其實(shí)比vue的狀態(tài)管理更合理,更優(yōu)雅,至于為什么我這么說,因?yàn)関uex的mutations居然對擴(kuò)展運(yùn)算符的state更新有嚴(yán)重的不兼容性或者說api設(shè)計(jì)上的bug。這會造成很多的不必要代碼,并且vuex的type這個玩意真的很惡心。

2。關(guān)于dispatch其實(shí)在使用上和vue在感覺長差別不大,但是具體的差別你要查看下相應(yīng)的api并自己去嘗試。

3。學(xué)習(xí)建議:現(xiàn)在國內(nèi)react使用最廣泛的是支付寶,強(qiáng)烈建議學(xué)習(xí)支付寶的antd前端ui庫,和ant-design-pro,非常好的一套框架。

2018年5月23日 11:50