Dva: рдбреЛрд░рд╛ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдЕрдЧре░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dvajs/dva

рд╢реАрд░реНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

dva рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП create-react-app рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдРрдк рдмрдирд╛рдПрдВред

$ npm install create-react-app -g
$ create-react-app myapp

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рджрд░реНрдЬ рдХрд░реЗрдВред

$ cd myapp

рдбреАрд╡реАрдП рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

$ npm install dva --save

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ src/index.js , рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ:

import React from 'react';
import dva from 'dva';
import App from './App';
import './index.css';

const app = dva();
app.router(() => <App />);
app.start('#root');

рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░реЗрдВред

$ npm start

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдк рдореЙрдбрд▓, рд░рд╛рдЙрдЯрд░ рдЖрджрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЦреБрдж рдХреА рдЧрд▓рддреА

browser.js?add8:40    Uncaught Invariant Violation: app.model: namespace should be defined
// .babelrc
{
  "presets": ["react", "es2015","stage-1"],
  "plugins": [
    ["transform-runtime", {
      "polyfill": false,
      "regenerator": true
    }]
  ]
}
var webpack = require('webpack');
module.exports = {
  entry:  __dirname + "/src/index.js",
  output: {
    path: __dirname + "/dist",
    filename: "index.js"
  },
  devtool: 'eval-source-map',
  devServer: {
    contentBase: "./src",
    colors: true,
    historyApiFallback: true,
    inline: true,
    // hot: true
  },
  resolve: {
    extensions: ['', '.js', '.jsx']
  },
  module: {
    loaders: [
      {
        test: /\.json$/,
        loader: "json"
      },
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        loader: 'babel',
      },
      {
        test: /\.(css|less)$/,
        loader: 'style!css?modules'
      }
    ]
  }
}

dva рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП create-react-app рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдРрдк рдмрдирд╛рдПрдВред

$ npm install create-react-app -g
$ create-react-app myapp

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рджрд░реНрдЬ рдХрд░реЗрдВред

$ cd myapp

рдбреАрд╡реАрдП рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

$ npm install dva --save

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ src/index.js , рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ:

import React from 'react';
import dva from 'dva';
import App from './App';
import './index.css';

const app = dva();
app.router(() => <App />);
app.start('#root');

рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░реЗрдВред

$ npm start

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдк рдореЙрдбрд▓, рд░рд╛рдЙрдЯрд░ рдЖрджрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

huyawei picture huyawei  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bjwulin picture bjwulin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oldfeel picture oldfeel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wm3445 picture wm3445  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MiaoXingGua picture MiaoXingGua  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ