第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從自定義 React 組件庫導(dǎo)入和使用組件會導(dǎo)致 Invariant Violation:

從自定義 React 組件庫導(dǎo)入和使用組件會導(dǎo)致 Invariant Violation:

炎炎設(shè)計 2021-11-25 19:28:29
我的工作是制作一個 React UI 工具包/組件庫,供我們產(chǎn)品內(nèi)部使用。在 Storybook 上開發(fā)和顯示時一切正常。在從 create-react-app 開箱即用的通用項目中測試庫時,導(dǎo)入和實現(xiàn)沒有 React Hooks 的組件是沒問題的,但是一旦我們使用 Hooks 制作的組件 - Invalid Hook Call 錯誤顯示:https : //reactjs.org/warnings/invalid-hook-call-warning.html已經(jīng)嘗試了那里列出的所有內(nèi)容(并閱讀并嘗試了頁面上鏈接的 github 線程解決方案),并且該組件只是簡單地使用useRef(),沒有其他任何東西,所以我們知道沒有違反任何規(guī)則,React 和 React-dom 版本是最新的,并且正在運行npm ls react和npm ls react-dom在項目成果react@16.10.2和react-dom@16.10.2并沒有別的...所以看起來我們有多個陣營的不?任何幫助將非常感激??!這是 UI 套件的 package.json{    "name": "react-ui-kit",    "version": "0.0.15",    "description": "UI Kit",    "main": "dist/index",    "module": "dist/index",    "typings": "dist/index",    "jest": {        "setupFilesAfterEnv": [            "<rootDir>/setupTests.js"        ],        "coverageReporters": [            "json-summary",            "text",            "lcov"        ]    },    "scripts": {        "test": "jest --coverage",        "test:badges": "npm run test && jest-coverage-badges input './coverage/coverage-summary.json' output './badges'",        "test-update": "jest --updateSnapshot",        "lint:css": "stylelint './src/**/*.js'",        "storybook": "start-storybook -p 6006",        "build-storybook": "build-storybook -c .storybook -o .out",        "generate": "plop --plopfile ./.plop/plop.config.js",        "build": "webpack --mode production",        "prepare": "npm run build",        "prepublishOnly": "npm run test:badges",        "storybook-docs": "build-storybook --docs",        "todo": "leasot './src/**/*.js'",        "todo-ci": "leasot -x --reporter markdown './src/**/*.js' > TODO.md"    },    "license": "ISC",    "peerDependencies": {        "prop-types": "^15.7.2",        "react": "^16.9.0",        "react-dom": "^16.9.0",        "recharts": "^1.7.1",        "styled-components": "^4.3.2",        "styled-normalize": "^8.0.6"    },  
查看完整描述

1 回答

?
當(dāng)年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

查看 webpack 配置,我可以看到,UI 工具包與react包含的內(nèi)容捆綁在一起,這可能會導(dǎo)致問題。


為了避免這種情況,您可以使用 webpack externals。


https://webpack.js.org/configuration/externals/


externals 配置選項提供了一種從輸出包中排除依賴項的方法。相反,創(chuàng)建的包依賴于存在于消費者環(huán)境中的依賴關(guān)系。此功能通常對庫開發(fā)人員最有用,但是它有多種應(yīng)用程序。


因此,您可以將 UI Kit webpack 配置更新為不包含react,并且 peerDependencies 應(yīng)該負責(zé)庫的任何使用者的依賴項處理。


更新了 webpack.config


const path = require("path");

module.exports = {

  mode: "production",

  entry: "./src/index.js",

  output: {

    path: path.resolve("dist"),

    filename: "index.js",

    libraryTarget: "commonjs2"

  },

  module: {

    rules: [

      {

        test: /\.jsx?$/,

        exclude: /(node_modules)/,

        use: "babel-loader"

      },

      {

        test: /\.(eot|svg|ttf|woff|woff2|otf)$/,

        use: [

          {

            loader: "file-loader",

            options: {

              name: "[name].[ext]",

              limit: 10000,

              mimetype: "application/font-woff"

            }

          }

        ]

      }

    ]

  },

  resolve: {

    alias: {

      components: path.resolve(__dirname, "src/components/"),

      utils: path.resolve(__dirname, "src/utils/"),

      themes: path.resolve(__dirname, "src/themes/")

    },

    extensions: [".js", ".jsx"]

  },

  externals: {

        // Use external version of React

        react: "react"

 },

  devtool: false

};

我已經(jīng)發(fā)布了一個測試包來確認這一點(react-ui-kit-dontuse)。


演示鏈接


v0.0.21(Without webpack externals) 

https://stackblitz.com/edit/react-xyjgep


v0.0.23(With webpack externals) 

https://stackblitz.com/edit/react-ihnmrl


測試包源碼:https : //github.com/nithinthampi/react-ui-lib-test


希望這可以幫助!


查看完整回答
反對 回復(fù) 2021-11-25
  • 1 回答
  • 0 關(guān)注
  • 432 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號