検索
ホームページウェブフロントエンドjsチュートリアルReact+antd コンポーネントは完全なバックエンドを作成します (コード付き)

今回は、react+antd コンポーネントを使用して完全なバックエンドを作成する (コード付き) ことを紹介します。react+antd コンポーネントを使用してバックエンドを作成する場合の注意点は何ですか?

前書き: この記事では、React と Redux に関する基本的な知識が必要です。具体的な学習教材については、オンラインでご覧ください。

create-react-appスキャフォールディングを使用する

具体的な基本構成については、

antdコンポーネントで実装した管理システムのデモ、オンラインアドレス

開発前の振り返り

1を参照してください。 import は動的にロードされるモジュール import (パラメータ) の関数であり、パラメータはモジュールのアドレスです。

注: インポート後に Promise オブジェクトが返されます。

import('/components/chart').then(mud => {
  dosomething(mod)
});
このデモは、非同期読み込みコンポーネント バンドルを構築します。具体的なコードについては、

class Bundle extends Component {
 constructor(props) {
   super(props);
   this.state = {
     mod: null
   };
 }
 unmount = false
 componentDidMount = () => {
  // 加载组件时,打开全局loading
  this.props.dispatch(loading(true))
  this.load(this.props)
 }
 componentWillUnmount = () => {
  this.unmount = true
 }
 
 componentWillReceiveProps(nextProps) {
   if (nextProps.load !== this.props.load) {
     this.load(nextProps)
   }
 }
 load(props) {
   if (this.state.mod) {
     return true
   }
   //注意这里,使用Promise对象; mod.default导出默认
   props.load().then((mod) => {
     if (this.unmount) {
       // 离开组件时,不异步执行setState
       this.props.dispatch(loading(false))
       return false
     }
     this.setState({
       mod: mod.default ? mod.default : mod
     }, _ => {
      // 组件加载完毕,关闭loading
      this.props.dispatch(loading(false))
     });
   });
 }
 render() {
   return this.state.mod ? this.props.children(this.state.mod) : null;
 }
}
具体的な使用法

2を参照してください。ルートコンポーネント レンダリングの読み込み用

詳細については、このデモアドレスを参照してください src/routers/router.js - render function

3. ルーティングオブジェクトを設定します

プロジェクトのレイアウトは次のとおりです

デモでは、公式の router4 を使用します。 ドキュメントのデモは単一行のルート (Vue ルーターなど) であり、統一された構成オブジェクトはありません。 管理システムは基本的にビジネス開発のためのコンテンツを中心に展開します。共通の構成の構築は、router.config.js

<bundle> import('路径')}>
  {Comp => {
   return Comp ? <comp></comp> : <p>加载中...</p>
  }}
 </bundle>

実装アイデアの開発と構築に役立ちます。次に、コンテンツは Admin によってラップされます。 .children にコンテンツを入力します。 (バンドルコンポーネントを使用して非同期にロードし、レンダリングのためにコンポーネントに挿入します)

const routers = [
 {
  menuName: '主页',
  menuIco: 'home',
  component: 'home/home.js', // 主页
  path: '/admin/home' // 主页
 },
 {
  menuName: '用户',
  menuIco: 'user',
  children: [
   {
    menuName: '用户列表',
    component: 'user/list.js', // 主页
    path: '/admin/user/list' // 主页
   }
  ]
 },
 {
  menuName: '多级菜单',
  menuIco: 'setting',
  children: [
   {
    menuName: '多级菜单2',
    children: [
     {
      menuName: '菜单',
      component: 'user/list.js', // 主页
      path: '/admin/user/list3' // 主页
     }
    ]
   }
  ]
 },
 {
  menuName: '关于我',
  menuIco: 'smile-o',
  component: 'about/about.js', // 主页
  path: '/admin/about' // 主页
 }
]

4. 一般的なリデューサーを設定します

ビジネスシナリオの一部のコンポーネントは、状態の改善を必要とします。状態の改善を理解してください。科学的にオンラインにしてください)

<admin>
  <content>
    {this.props.children}
  </content>
</admin>
// Content组件内部
render() {
  return (
    <p> 
      {this.props.children}
    </p>
  )
}
// 本demo实现,详见src/routers/router.js
<route> (
  <admin>
   {initRouters.map(el => this.deepItem(el, { ...this.props, ...item}))}
  </admin>
 )}
/></route>

5. ログイン検証

ページがリダイレクトされるときにトリガーされる withRouter 関数を使用します

import otherReducers from './otherReducers'
const App = combineReducers({
  rootReducers,
  ...otherReducers // 其他需要增加的reducers
})
ログインしていない場合は返されます

const newWithRouter = withRouter(props => {
  // ....
})
6. ルートインターセプト

上記と同様、ルーティング設定と権限に従って、対応するメニューまたはブロックに戻ります

return <redirect></redirect>

7 その他の設定

7-1. カスタムスタイル

return <redirect></redirect>
使用方法: 直接インポート

App.jsの

// 修改webpack.config.dev.js 和 webpack.config-prod.js 配置文件
{
  test: /\.(css|less)$/,
  // 匹配src的都自动加载css-module
  include: [/src/],
  exclude: [/theme/],
  use: [
    require.resolve('style-loader'), {
      loader: require.resolve('css-loader'),
      options: {
        importLoaders: 1,
        modules: true, // 新增对css modules的支持
        localIdentName: '[path]___[name]__[local]___[hash:base64:5]'
      }
    }, {
      loader: require.resolve('postcss-loader'),
      options: {
        // Necessary for external CSS imports to work
        // https://github.com/facebookincubator/create-react-app/issues/2677
        ident: 'postcss',
        plugins: () => [
          require('postcss-flexbugs-fixes'),
          autoprefixer({
            browsers: [
              '>1%', 'last 4 versions', 'Firefox ESR', 'not ie <strong>7-2。ホットアップデート</strong>ステップ1:<p style="text-align: left;"></p><pre class="brush:php;toolbar:false">import './assets/theme/App.less'
ステップ2:

webpack.config.jsのエントリ値にreact-hot-loader/patchを追加します

ステップ3:

webpackDevServer.config.js で hot を true に設定します

ステップ 4: webpack.config.dev.js で、react-hot-loader/babel を babel-loader プラグインに追加します

// 安装react-hot-loader 
npm install --save-dev react-hot-loader
ステップ 5:

index.js を書き換えます, アプリのマウント

{
  test: /\.(js|jsx|mjs)$/,
  include: paths.appSrc,
  loader: require.resolve('babel-loader'),
  options: {
    // This is a feature of `babel-loader` for webpack (not Babel itself). It
    // enables caching results in ./node_modules/.cache/babel-loader/ directory for
    // faster rebuilds.
    cacheDirectory: true,
    plugins: [
      'react-hot-loader/babel'
    ]
  }
},
7-3. ローカルブラウジング

package.jsonに

import { AppContainer } from 'react-hot-loader'
const render = Component => {
  ReactDOM.render(
    <appcontainer>
      <component></component>
    </appcontainer>,
    document.getElementById('root')
  )
}
render(App)
if(module.hot) {
  module.hot.accept('./App',() => {
    render(App);
  });
}
追記:reactとvueの使用に関する洞察

reactは関数型プログラミングであり、コードの難易度、学習曲線、見栄っ張りの指標、コミュニティを伴います。生態学的多様性は v よりも高い。

vue には、開発の難易度を下げるための多数の手順が用意されており、詳細かつ完全なドキュメントにより、より迅速に開始できます。

react は、vue の命令に比べて提供する API が少なく、ビジネス シナリオの機能を自分で実装する必要があるため、少し難易度が高くなります。

React は大規模なプロジェクトに適しています

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、ご注意ください。 php 中国語 Web サイトの他の関連記事へ!

推奨読書:

VUE の使用法の詳細な分析

vue+webpack を使用して非同期読み込みを行う方法

以上がReact+antd コンポーネントは完全なバックエンドを作成します (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptをインストールするにはどうすればよいですか?JavaScriptをインストールするにはどうすればよいですか?Apr 05, 2025 am 12:16 AM

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

クォーツでタスクが開始される前に通知を送信する方法は?クォーツでタスクが開始される前に通知を送信する方法は?Apr 04, 2025 pm 09:24 PM

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?Apr 04, 2025 pm 09:21 PM

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?Apr 04, 2025 pm 09:18 PM

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?Apr 04, 2025 pm 09:15 PM

複数のリンクの同時ゲットリクエストを作成し、結果を返すために順番に判断する方法は? TamperMonkeyスクリプトでは、複数のチェーンを使用する必要があることがよくあります...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい