From 40c4568d0e034f82d2afa3239728dcbad8447d32 Mon Sep 17 00:00:00 2001 From: yougen Date: Mon, 6 May 2024 17:08:10 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=8D=87=E7=BA=A7react=2018?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .history/package_20240506170605.json | 46 ++++++ .history/package_20240506170723.json | 46 ++++++ .../packages/dva/package_20240506170605.json | 62 ++++++++ .../packages/dva/package_20240506170743.json | 62 ++++++++ .../packages/dva/src/index_20240506170605.js | 150 ++++++++++++++++++ .../packages/dva/src/index_20240506170801.js | 147 +++++++++++++++++ package.json | 4 +- packages/dva/package.json | 4 +- packages/dva/src/index.js | 125 +++++++-------- 9 files changed, 578 insertions(+), 68 deletions(-) create mode 100644 .history/package_20240506170605.json create mode 100644 .history/package_20240506170723.json create mode 100644 .history/packages/dva/package_20240506170605.json create mode 100644 .history/packages/dva/package_20240506170743.json create mode 100644 .history/packages/dva/src/index_20240506170605.js create mode 100644 .history/packages/dva/src/index_20240506170801.js diff --git a/.history/package_20240506170605.json b/.history/package_20240506170605.json new file mode 100644 index 00000000..8c90cced --- /dev/null +++ b/.history/package_20240506170605.json @@ -0,0 +1,46 @@ +{ + "private": true, + "scripts": { + "build": "father-build", + "doc:dev": "./website/node_modules/.bin/vuepress dev ./docs", + "doc:deploy": "rm -rf ./website/yarn.lock && cd ./website && npm run deploy && cd -", + "changelog": "lerna-changelog", + "test": "npm run debug -- --coverage", + "debug": "umi-test", + "coveralls": "cat ./coverage/lcov.info | coveralls", + "lint": "eslint --ext .js packages", + "precommit": "lint-staged", + "release": "./scripts/publish.js", + "bootstrap": "lerna bootstrap" + }, + "devDependencies": { + "@types/jest": "^24.0.22", + "babel-eslint": "^9.0.0", + "chalk": "^2.3.2", + "coveralls": "^3.0.0", + "eslint": "^5.6.0", + "eslint-config-airbnb": "^17.1.0", + "eslint-config-prettier": "^4.3.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-jsx-a11y": "^6.0.2", + "eslint-plugin-prettier": "^3.1.0", + "eslint-plugin-react": "^7.11.1", + "father-build": "^1.14.0", + "husky": "^0.14.3", + "lerna": "^3.4.0", + "lerna-changelog": "^0.8.0", + "lint-staged": "^7.2.2", + "prettier": "^1.14.3", + "react": "^16.8.4", + "react-dom": "^16.8.4", + "react-testing-library": "^6.0.0", + "shelljs": "^0.8.1", + "umi-test": "^1.5.2" + }, + "lint-staged": { + "*.js": [ + "prettier --trailing-comma all --single-quote --write", + "git add" + ] + } +} diff --git a/.history/package_20240506170723.json b/.history/package_20240506170723.json new file mode 100644 index 00000000..1b5e6a0e --- /dev/null +++ b/.history/package_20240506170723.json @@ -0,0 +1,46 @@ +{ + "private": true, + "scripts": { + "build": "father-build", + "doc:dev": "./website/node_modules/.bin/vuepress dev ./docs", + "doc:deploy": "rm -rf ./website/yarn.lock && cd ./website && npm run deploy && cd -", + "changelog": "lerna-changelog", + "test": "npm run debug -- --coverage", + "debug": "umi-test", + "coveralls": "cat ./coverage/lcov.info | coveralls", + "lint": "eslint --ext .js packages", + "precommit": "lint-staged", + "release": "./scripts/publish.js", + "bootstrap": "lerna bootstrap" + }, + "devDependencies": { + "@types/jest": "^24.0.22", + "babel-eslint": "^9.0.0", + "chalk": "^2.3.2", + "coveralls": "^3.0.0", + "eslint": "^5.6.0", + "eslint-config-airbnb": "^17.1.0", + "eslint-config-prettier": "^4.3.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-jsx-a11y": "^6.0.2", + "eslint-plugin-prettier": "^3.1.0", + "eslint-plugin-react": "^7.11.1", + "father-build": "^1.14.0", + "husky": "^0.14.3", + "lerna": "^3.4.0", + "lerna-changelog": "^0.8.0", + "lint-staged": "^7.2.2", + "prettier": "^1.14.3", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "react-testing-library": "^6.0.0", + "shelljs": "^0.8.1", + "umi-test": "^1.5.2" + }, + "lint-staged": { + "*.js": [ + "prettier --trailing-comma all --single-quote --write", + "git add" + ] + } +} diff --git a/.history/packages/dva/package_20240506170605.json b/.history/packages/dva/package_20240506170605.json new file mode 100644 index 00000000..8c236259 --- /dev/null +++ b/.history/packages/dva/package_20240506170605.json @@ -0,0 +1,62 @@ +{ + "name": "dva", + "version": "2.6.0-beta.23", + "description": "React and redux based, lightweight and elm-style framework.", + "main": "dist/index.js", + "module": "dist/index.esm.js", + "typings": "index.d.ts", + "sideEffects": false, + "repository": { + "type": "git", + "url": "https://github.com/dvajs/dva" + }, + "homepage": "https://github.com/dvajs/dva", + "keywords": [ + "dva", + "alibaba", + "react", + "react-native", + "redux", + "redux-saga", + "elm", + "framework", + "frontend" + ], + "authors": [ + "chencheng (https://github.com/sorrycc)" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/dvajs/dva/issues" + }, + "dependencies": { + "@babel/runtime": "^7.0.0", + "@types/isomorphic-fetch": "^0.0.35", + "@types/react-redux": "^7.1.0", + "@types/react-router-dom": "^5.1.2", + "connected-react-router": "6.5.2", + "dva-core": "2.0.4", + "global": "^4.3.2", + "history": "^4.7.2", + "invariant": "^2.2.4", + "isomorphic-fetch": "^2.2.1", + "react-redux": "^7.1.0", + "react-router-dom": "^5.1.2", + "redux": "^4.0.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + }, + "files": [ + "dist", + "src", + "dynamic.js", + "fetch.js", + "index.js", + "router.js", + "saga.js", + "warnAboutDeprecatedCJSRequire.js", + "*.d.ts" + ] +} diff --git a/.history/packages/dva/package_20240506170743.json b/.history/packages/dva/package_20240506170743.json new file mode 100644 index 00000000..6896810f --- /dev/null +++ b/.history/packages/dva/package_20240506170743.json @@ -0,0 +1,62 @@ +{ + "name": "dva", + "version": "2.6.0-beta.23", + "description": "React and redux based, lightweight and elm-style framework.", + "main": "dist/index.js", + "module": "dist/index.esm.js", + "typings": "index.d.ts", + "sideEffects": false, + "repository": { + "type": "git", + "url": "https://github.com/dvajs/dva" + }, + "homepage": "https://github.com/dvajs/dva", + "keywords": [ + "dva", + "alibaba", + "react", + "react-native", + "redux", + "redux-saga", + "elm", + "framework", + "frontend" + ], + "authors": [ + "chencheng (https://github.com/sorrycc)" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/dvajs/dva/issues" + }, + "dependencies": { + "@babel/runtime": "^7.0.0", + "@types/isomorphic-fetch": "^0.0.35", + "@types/react-redux": "^7.1.0", + "@types/react-router-dom": "^5.1.2", + "connected-react-router": "6.5.2", + "dva-core": "2.0.4", + "global": "^4.3.2", + "history": "^4.7.2", + "invariant": "^2.2.4", + "isomorphic-fetch": "^2.2.1", + "react-redux": "^7.1.0", + "react-router-dom": "^5.1.2", + "redux": "^4.0.1" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "files": [ + "dist", + "src", + "dynamic.js", + "fetch.js", + "index.js", + "router.js", + "saga.js", + "warnAboutDeprecatedCJSRequire.js", + "*.d.ts" + ] +} diff --git a/.history/packages/dva/src/index_20240506170605.js b/.history/packages/dva/src/index_20240506170605.js new file mode 100644 index 00000000..f66af8d9 --- /dev/null +++ b/.history/packages/dva/src/index_20240506170605.js @@ -0,0 +1,150 @@ +import React from 'react'; +import invariant from 'invariant'; +import { createBrowserHistory, createMemoryHistory, createHashHistory } from 'history'; +import document from 'global/document'; +import { + Provider, + connect, + connectAdvanced, + useSelector, + useDispatch, + useStore, + shallowEqual, +} from 'react-redux'; +import { bindActionCreators } from 'redux'; +import { utils, create, saga } from 'dva-core'; +import * as router from 'react-router-dom'; +import * as routerRedux from 'connected-react-router'; + +const { connectRouter, routerMiddleware } = routerRedux; +const { isFunction } = utils; +const { useHistory, useLocation, useParams, useRouteMatch } = router; + +export default function(opts = {}) { + const history = opts.history || createHashHistory(); + const createOpts = { + initialReducer: { + router: connectRouter(history), + }, + setupMiddlewares(middlewares) { + return [routerMiddleware(history), ...middlewares]; + }, + setupApp(app) { + app._history = patchHistory(history); + }, + }; + + const app = create(opts, createOpts); + const oldAppStart = app.start; + app.router = router; + app.start = start; + return app; + + function router(router) { + invariant( + isFunction(router), + `[app.router] router should be function, but got ${typeof router}`, + ); + app._router = router; + } + + function start(container) { + // 允许 container 是字符串,然后用 querySelector 找元素 + if (isString(container)) { + container = document.querySelector(container); + invariant(container, `[app.start] container ${container} not found`); + } + + // 并且是 HTMLElement + invariant( + !container || isHTMLElement(container), + `[app.start] container should be HTMLElement`, + ); + + // 路由必须提前注册 + invariant(app._router, `[app.start] router must be registered before app.start()`); + + if (!app._store) { + oldAppStart.call(app); + } + const store = app._store; + + // export _getProvider for HMR + // ref: https://github.com/dvajs/dva/issues/469 + app._getProvider = getProvider.bind(null, store, app); + + // If has container, render; else, return react component + if (container) { + render(container, store, app, app._router); + app._plugin.apply('onHmr')(render.bind(null, container, store, app)); + } else { + return getProvider(store, this, this._router); + } + } +} + +function isHTMLElement(node) { + return typeof node === 'object' && node !== null && node.nodeType && node.nodeName; +} + +function isString(str) { + return typeof str === 'string'; +} + +function getProvider(store, app, router) { + const DvaRoot = extraProps => ( + {router({ app, history: app._history, ...extraProps })} + ); + return DvaRoot; +} + +function render(container, store, app, router) { + const ReactDOM = require('react-dom'); // eslint-disable-line + ReactDOM.render(React.createElement(getProvider(store, app, router)), container); +} + +function patchHistory(history) { + const oldListen = history.listen; + history.listen = callback => { + // TODO: refact this with modified ConnectedRouter + // Let ConnectedRouter to sync history to store first + // connected-react-router's version is locked since the check function may be broken + // min version of connected-react-router + // e.g. + // function (e, t) { + // var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; + // r.inTimeTravelling ? r.inTimeTravelling = !1 : a(e, t, n) + // } + // ref: https://github.com/umijs/umi/issues/2693 + const cbStr = callback.toString(); + const isConnectedRouterHandler = + (callback.name === 'handleLocationChange' && cbStr.indexOf('onLocationChanged') > -1) || + (cbStr.indexOf('.inTimeTravelling') > -1 && + cbStr.indexOf('.inTimeTravelling') > -1 && + cbStr.indexOf('arguments[2]') > -1); + // why add __isDvaPatch: true + // since it's a patch from dva, we need to identify it in the listen handlers + callback(history.location, history.action, { __isDvaPatch: true }); + return oldListen.call(history, (...args) => { + if (isConnectedRouterHandler) { + callback(...args); + } else { + // Delay all listeners besides ConnectedRouter + setTimeout(() => { + callback(...args); + }); + } + }); + }; + return history; +} + +export fetch from 'isomorphic-fetch'; +export dynamic from './dynamic'; +export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEqual }; +export { bindActionCreators }; +export { router }; +export { saga }; +export { routerRedux }; +export { createBrowserHistory, createMemoryHistory, createHashHistory }; +export { useHistory, useLocation, useParams, useRouteMatch }; diff --git a/.history/packages/dva/src/index_20240506170801.js b/.history/packages/dva/src/index_20240506170801.js new file mode 100644 index 00000000..a473e6eb --- /dev/null +++ b/.history/packages/dva/src/index_20240506170801.js @@ -0,0 +1,147 @@ +import React from 'react' +import invariant from 'invariant' +import { createBrowserHistory, createMemoryHistory, createHashHistory } from 'history' +import document from 'global/document' +import { + Provider, + connect, + connectAdvanced, + useSelector, + useDispatch, + useStore, + shallowEqual, +} from 'react-redux' +import { bindActionCreators } from 'redux' +import { utils, create, saga } from 'dva-core' +import * as router from 'react-router-dom' +import * as routerRedux from 'connected-react-router' + +const { connectRouter, routerMiddleware } = routerRedux +const { isFunction } = utils +const { useHistory, useLocation, useParams, useRouteMatch } = router + +export default function (opts = {}) { + const history = opts.history || createHashHistory() + const createOpts = { + initialReducer: { + router: connectRouter(history), + }, + setupMiddlewares(middlewares) { + return [routerMiddleware(history), ...middlewares] + }, + setupApp(app) { + app._history = patchHistory(history) + }, + } + + const app = create(opts, createOpts) + const oldAppStart = app.start + app.router = router + app.start = start + return app + + function router(router) { + invariant( + isFunction(router), + `[app.router] router should be function, but got ${typeof router}`, + ) + app._router = router + } + + function start(container) { + // 允许 container 是字符串,然后用 querySelector 找元素 + if (isString(container)) { + container = document.querySelector(container) + invariant(container, `[app.start] container ${container} not found`) + } + + // 并且是 HTMLElement + invariant(!container || isHTMLElement(container), `[app.start] container should be HTMLElement`) + + // 路由必须提前注册 + invariant(app._router, `[app.start] router must be registered before app.start()`) + + if (!app._store) { + oldAppStart.call(app) + } + const store = app._store + + // export _getProvider for HMR + // ref: https://github.com/dvajs/dva/issues/469 + app._getProvider = getProvider.bind(null, store, app) + + // If has container, render; else, return react component + if (container) { + render(container, store, app, app._router) + app._plugin.apply('onHmr')(render.bind(null, container, store, app)) + } else { + return getProvider(store, this, this._router) + } + } +} + +function isHTMLElement(node) { + return typeof node === 'object' && node !== null && node.nodeType && node.nodeName +} + +function isString(str) { + return typeof str === 'string' +} + +function getProvider(store, app, router) { + const DvaRoot = extraProps => ( + {router({ app, history: app._history, ...extraProps })} + ) + return DvaRoot +} + +function render(container, store, app, router) { + const ReactDOM = require('react-dom/client') // eslint-disable-line + ReactDOM.createRoot(container).render(React.createElement(getProvider(store, app, router))) +} + +function patchHistory(history) { + const oldListen = history.listen + history.listen = callback => { + // TODO: refact this with modified ConnectedRouter + // Let ConnectedRouter to sync history to store first + // connected-react-router's version is locked since the check function may be broken + // min version of connected-react-router + // e.g. + // function (e, t) { + // var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; + // r.inTimeTravelling ? r.inTimeTravelling = !1 : a(e, t, n) + // } + // ref: https://github.com/umijs/umi/issues/2693 + const cbStr = callback.toString() + const isConnectedRouterHandler = + (callback.name === 'handleLocationChange' && cbStr.indexOf('onLocationChanged') > -1) || + (cbStr.indexOf('.inTimeTravelling') > -1 && + cbStr.indexOf('.inTimeTravelling') > -1 && + cbStr.indexOf('arguments[2]') > -1) + // why add __isDvaPatch: true + // since it's a patch from dva, we need to identify it in the listen handlers + callback(history.location, history.action, { __isDvaPatch: true }) + return oldListen.call(history, (...args) => { + if (isConnectedRouterHandler) { + callback(...args) + } else { + // Delay all listeners besides ConnectedRouter + setTimeout(() => { + callback(...args) + }) + } + }) + } + return history +} + +export fetch from 'isomorphic-fetch' +export dynamic from './dynamic' +export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEqual } +export { bindActionCreators } +export { router } +export { saga } +export { routerRedux } +export { createBrowserHistory, createMemoryHistory, createHashHistory } +export { useHistory, useLocation, useParams, useRouteMatch } diff --git a/package.json b/package.json index 8c90cced..1b5e6a0e 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,8 @@ "lerna-changelog": "^0.8.0", "lint-staged": "^7.2.2", "prettier": "^1.14.3", - "react": "^16.8.4", - "react-dom": "^16.8.4", + "react": "^18.0.0", + "react-dom": "^18.0.0", "react-testing-library": "^6.0.0", "shelljs": "^0.8.1", "umi-test": "^1.5.2" diff --git a/packages/dva/package.json b/packages/dva/package.json index 8c236259..6896810f 100644 --- a/packages/dva/package.json +++ b/packages/dva/package.json @@ -45,8 +45,8 @@ "redux": "^4.0.1" }, "peerDependencies": { - "react": "^16.8.4", - "react-dom": "^16.8.4" + "react": "^18.0.0", + "react-dom": "^18.0.0" }, "files": [ "dist", diff --git a/packages/dva/src/index.js b/packages/dva/src/index.js index f66af8d9..a473e6eb 100644 --- a/packages/dva/src/index.js +++ b/packages/dva/src/index.js @@ -1,7 +1,7 @@ -import React from 'react'; -import invariant from 'invariant'; -import { createBrowserHistory, createMemoryHistory, createHashHistory } from 'history'; -import document from 'global/document'; +import React from 'react' +import invariant from 'invariant' +import { createBrowserHistory, createMemoryHistory, createHashHistory } from 'history' +import document from 'global/document' import { Provider, connect, @@ -10,101 +10,98 @@ import { useDispatch, useStore, shallowEqual, -} from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { utils, create, saga } from 'dva-core'; -import * as router from 'react-router-dom'; -import * as routerRedux from 'connected-react-router'; - -const { connectRouter, routerMiddleware } = routerRedux; -const { isFunction } = utils; -const { useHistory, useLocation, useParams, useRouteMatch } = router; - -export default function(opts = {}) { - const history = opts.history || createHashHistory(); +} from 'react-redux' +import { bindActionCreators } from 'redux' +import { utils, create, saga } from 'dva-core' +import * as router from 'react-router-dom' +import * as routerRedux from 'connected-react-router' + +const { connectRouter, routerMiddleware } = routerRedux +const { isFunction } = utils +const { useHistory, useLocation, useParams, useRouteMatch } = router + +export default function (opts = {}) { + const history = opts.history || createHashHistory() const createOpts = { initialReducer: { router: connectRouter(history), }, setupMiddlewares(middlewares) { - return [routerMiddleware(history), ...middlewares]; + return [routerMiddleware(history), ...middlewares] }, setupApp(app) { - app._history = patchHistory(history); + app._history = patchHistory(history) }, - }; + } - const app = create(opts, createOpts); - const oldAppStart = app.start; - app.router = router; - app.start = start; - return app; + const app = create(opts, createOpts) + const oldAppStart = app.start + app.router = router + app.start = start + return app function router(router) { invariant( isFunction(router), `[app.router] router should be function, but got ${typeof router}`, - ); - app._router = router; + ) + app._router = router } function start(container) { // 允许 container 是字符串,然后用 querySelector 找元素 if (isString(container)) { - container = document.querySelector(container); - invariant(container, `[app.start] container ${container} not found`); + container = document.querySelector(container) + invariant(container, `[app.start] container ${container} not found`) } // 并且是 HTMLElement - invariant( - !container || isHTMLElement(container), - `[app.start] container should be HTMLElement`, - ); + invariant(!container || isHTMLElement(container), `[app.start] container should be HTMLElement`) // 路由必须提前注册 - invariant(app._router, `[app.start] router must be registered before app.start()`); + invariant(app._router, `[app.start] router must be registered before app.start()`) if (!app._store) { - oldAppStart.call(app); + oldAppStart.call(app) } - const store = app._store; + const store = app._store // export _getProvider for HMR // ref: https://github.com/dvajs/dva/issues/469 - app._getProvider = getProvider.bind(null, store, app); + app._getProvider = getProvider.bind(null, store, app) // If has container, render; else, return react component if (container) { - render(container, store, app, app._router); - app._plugin.apply('onHmr')(render.bind(null, container, store, app)); + render(container, store, app, app._router) + app._plugin.apply('onHmr')(render.bind(null, container, store, app)) } else { - return getProvider(store, this, this._router); + return getProvider(store, this, this._router) } } } function isHTMLElement(node) { - return typeof node === 'object' && node !== null && node.nodeType && node.nodeName; + return typeof node === 'object' && node !== null && node.nodeType && node.nodeName } function isString(str) { - return typeof str === 'string'; + return typeof str === 'string' } function getProvider(store, app, router) { const DvaRoot = extraProps => ( {router({ app, history: app._history, ...extraProps })} - ); - return DvaRoot; + ) + return DvaRoot } function render(container, store, app, router) { - const ReactDOM = require('react-dom'); // eslint-disable-line - ReactDOM.render(React.createElement(getProvider(store, app, router)), container); + const ReactDOM = require('react-dom/client') // eslint-disable-line + ReactDOM.createRoot(container).render(React.createElement(getProvider(store, app, router))) } function patchHistory(history) { - const oldListen = history.listen; + const oldListen = history.listen history.listen = callback => { // TODO: refact this with modified ConnectedRouter // Let ConnectedRouter to sync history to store first @@ -116,35 +113,35 @@ function patchHistory(history) { // r.inTimeTravelling ? r.inTimeTravelling = !1 : a(e, t, n) // } // ref: https://github.com/umijs/umi/issues/2693 - const cbStr = callback.toString(); + const cbStr = callback.toString() const isConnectedRouterHandler = (callback.name === 'handleLocationChange' && cbStr.indexOf('onLocationChanged') > -1) || (cbStr.indexOf('.inTimeTravelling') > -1 && cbStr.indexOf('.inTimeTravelling') > -1 && - cbStr.indexOf('arguments[2]') > -1); + cbStr.indexOf('arguments[2]') > -1) // why add __isDvaPatch: true // since it's a patch from dva, we need to identify it in the listen handlers - callback(history.location, history.action, { __isDvaPatch: true }); + callback(history.location, history.action, { __isDvaPatch: true }) return oldListen.call(history, (...args) => { if (isConnectedRouterHandler) { - callback(...args); + callback(...args) } else { // Delay all listeners besides ConnectedRouter setTimeout(() => { - callback(...args); - }); + callback(...args) + }) } - }); - }; - return history; + }) + } + return history } -export fetch from 'isomorphic-fetch'; -export dynamic from './dynamic'; -export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEqual }; -export { bindActionCreators }; -export { router }; -export { saga }; -export { routerRedux }; -export { createBrowserHistory, createMemoryHistory, createHashHistory }; -export { useHistory, useLocation, useParams, useRouteMatch }; +export fetch from 'isomorphic-fetch' +export dynamic from './dynamic' +export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEqual } +export { bindActionCreators } +export { router } +export { saga } +export { routerRedux } +export { createBrowserHistory, createMemoryHistory, createHashHistory } +export { useHistory, useLocation, useParams, useRouteMatch } From 9889184e4076f286fb2cb49db59e274154257828 Mon Sep 17 00:00:00 2001 From: yougen Date: Mon, 6 May 2024 17:09:49 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=BF=BD=E7=95=A5.history?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1b6af44e..38355f79 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /packages/**/node_modules /packages/**/dist /lerna-debug.log +.history/ From 56f36f9b242c8a0085ba0a827e5ea0036e852533 Mon Sep 17 00:00:00 2001 From: yougen Date: Mon, 6 May 2024 17:14:24 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=BF=BD=E7=95=A5.history?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .history/package_20240506170605.json | 46 ------ .history/package_20240506170723.json | 46 ------ .../packages/dva/package_20240506170605.json | 62 -------- .../packages/dva/package_20240506170743.json | 62 -------- .../packages/dva/src/index_20240506170605.js | 150 ------------------ .../packages/dva/src/index_20240506170801.js | 147 ----------------- 6 files changed, 513 deletions(-) delete mode 100644 .history/package_20240506170605.json delete mode 100644 .history/package_20240506170723.json delete mode 100644 .history/packages/dva/package_20240506170605.json delete mode 100644 .history/packages/dva/package_20240506170743.json delete mode 100644 .history/packages/dva/src/index_20240506170605.js delete mode 100644 .history/packages/dva/src/index_20240506170801.js diff --git a/.history/package_20240506170605.json b/.history/package_20240506170605.json deleted file mode 100644 index 8c90cced..00000000 --- a/.history/package_20240506170605.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "private": true, - "scripts": { - "build": "father-build", - "doc:dev": "./website/node_modules/.bin/vuepress dev ./docs", - "doc:deploy": "rm -rf ./website/yarn.lock && cd ./website && npm run deploy && cd -", - "changelog": "lerna-changelog", - "test": "npm run debug -- --coverage", - "debug": "umi-test", - "coveralls": "cat ./coverage/lcov.info | coveralls", - "lint": "eslint --ext .js packages", - "precommit": "lint-staged", - "release": "./scripts/publish.js", - "bootstrap": "lerna bootstrap" - }, - "devDependencies": { - "@types/jest": "^24.0.22", - "babel-eslint": "^9.0.0", - "chalk": "^2.3.2", - "coveralls": "^3.0.0", - "eslint": "^5.6.0", - "eslint-config-airbnb": "^17.1.0", - "eslint-config-prettier": "^4.3.0", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-jsx-a11y": "^6.0.2", - "eslint-plugin-prettier": "^3.1.0", - "eslint-plugin-react": "^7.11.1", - "father-build": "^1.14.0", - "husky": "^0.14.3", - "lerna": "^3.4.0", - "lerna-changelog": "^0.8.0", - "lint-staged": "^7.2.2", - "prettier": "^1.14.3", - "react": "^16.8.4", - "react-dom": "^16.8.4", - "react-testing-library": "^6.0.0", - "shelljs": "^0.8.1", - "umi-test": "^1.5.2" - }, - "lint-staged": { - "*.js": [ - "prettier --trailing-comma all --single-quote --write", - "git add" - ] - } -} diff --git a/.history/package_20240506170723.json b/.history/package_20240506170723.json deleted file mode 100644 index 1b5e6a0e..00000000 --- a/.history/package_20240506170723.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "private": true, - "scripts": { - "build": "father-build", - "doc:dev": "./website/node_modules/.bin/vuepress dev ./docs", - "doc:deploy": "rm -rf ./website/yarn.lock && cd ./website && npm run deploy && cd -", - "changelog": "lerna-changelog", - "test": "npm run debug -- --coverage", - "debug": "umi-test", - "coveralls": "cat ./coverage/lcov.info | coveralls", - "lint": "eslint --ext .js packages", - "precommit": "lint-staged", - "release": "./scripts/publish.js", - "bootstrap": "lerna bootstrap" - }, - "devDependencies": { - "@types/jest": "^24.0.22", - "babel-eslint": "^9.0.0", - "chalk": "^2.3.2", - "coveralls": "^3.0.0", - "eslint": "^5.6.0", - "eslint-config-airbnb": "^17.1.0", - "eslint-config-prettier": "^4.3.0", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-jsx-a11y": "^6.0.2", - "eslint-plugin-prettier": "^3.1.0", - "eslint-plugin-react": "^7.11.1", - "father-build": "^1.14.0", - "husky": "^0.14.3", - "lerna": "^3.4.0", - "lerna-changelog": "^0.8.0", - "lint-staged": "^7.2.2", - "prettier": "^1.14.3", - "react": "^18.0.0", - "react-dom": "^18.0.0", - "react-testing-library": "^6.0.0", - "shelljs": "^0.8.1", - "umi-test": "^1.5.2" - }, - "lint-staged": { - "*.js": [ - "prettier --trailing-comma all --single-quote --write", - "git add" - ] - } -} diff --git a/.history/packages/dva/package_20240506170605.json b/.history/packages/dva/package_20240506170605.json deleted file mode 100644 index 8c236259..00000000 --- a/.history/packages/dva/package_20240506170605.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "dva", - "version": "2.6.0-beta.23", - "description": "React and redux based, lightweight and elm-style framework.", - "main": "dist/index.js", - "module": "dist/index.esm.js", - "typings": "index.d.ts", - "sideEffects": false, - "repository": { - "type": "git", - "url": "https://github.com/dvajs/dva" - }, - "homepage": "https://github.com/dvajs/dva", - "keywords": [ - "dva", - "alibaba", - "react", - "react-native", - "redux", - "redux-saga", - "elm", - "framework", - "frontend" - ], - "authors": [ - "chencheng (https://github.com/sorrycc)" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/dvajs/dva/issues" - }, - "dependencies": { - "@babel/runtime": "^7.0.0", - "@types/isomorphic-fetch": "^0.0.35", - "@types/react-redux": "^7.1.0", - "@types/react-router-dom": "^5.1.2", - "connected-react-router": "6.5.2", - "dva-core": "2.0.4", - "global": "^4.3.2", - "history": "^4.7.2", - "invariant": "^2.2.4", - "isomorphic-fetch": "^2.2.1", - "react-redux": "^7.1.0", - "react-router-dom": "^5.1.2", - "redux": "^4.0.1" - }, - "peerDependencies": { - "react": "^16.8.4", - "react-dom": "^16.8.4" - }, - "files": [ - "dist", - "src", - "dynamic.js", - "fetch.js", - "index.js", - "router.js", - "saga.js", - "warnAboutDeprecatedCJSRequire.js", - "*.d.ts" - ] -} diff --git a/.history/packages/dva/package_20240506170743.json b/.history/packages/dva/package_20240506170743.json deleted file mode 100644 index 6896810f..00000000 --- a/.history/packages/dva/package_20240506170743.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "dva", - "version": "2.6.0-beta.23", - "description": "React and redux based, lightweight and elm-style framework.", - "main": "dist/index.js", - "module": "dist/index.esm.js", - "typings": "index.d.ts", - "sideEffects": false, - "repository": { - "type": "git", - "url": "https://github.com/dvajs/dva" - }, - "homepage": "https://github.com/dvajs/dva", - "keywords": [ - "dva", - "alibaba", - "react", - "react-native", - "redux", - "redux-saga", - "elm", - "framework", - "frontend" - ], - "authors": [ - "chencheng (https://github.com/sorrycc)" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/dvajs/dva/issues" - }, - "dependencies": { - "@babel/runtime": "^7.0.0", - "@types/isomorphic-fetch": "^0.0.35", - "@types/react-redux": "^7.1.0", - "@types/react-router-dom": "^5.1.2", - "connected-react-router": "6.5.2", - "dva-core": "2.0.4", - "global": "^4.3.2", - "history": "^4.7.2", - "invariant": "^2.2.4", - "isomorphic-fetch": "^2.2.1", - "react-redux": "^7.1.0", - "react-router-dom": "^5.1.2", - "redux": "^4.0.1" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - }, - "files": [ - "dist", - "src", - "dynamic.js", - "fetch.js", - "index.js", - "router.js", - "saga.js", - "warnAboutDeprecatedCJSRequire.js", - "*.d.ts" - ] -} diff --git a/.history/packages/dva/src/index_20240506170605.js b/.history/packages/dva/src/index_20240506170605.js deleted file mode 100644 index f66af8d9..00000000 --- a/.history/packages/dva/src/index_20240506170605.js +++ /dev/null @@ -1,150 +0,0 @@ -import React from 'react'; -import invariant from 'invariant'; -import { createBrowserHistory, createMemoryHistory, createHashHistory } from 'history'; -import document from 'global/document'; -import { - Provider, - connect, - connectAdvanced, - useSelector, - useDispatch, - useStore, - shallowEqual, -} from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { utils, create, saga } from 'dva-core'; -import * as router from 'react-router-dom'; -import * as routerRedux from 'connected-react-router'; - -const { connectRouter, routerMiddleware } = routerRedux; -const { isFunction } = utils; -const { useHistory, useLocation, useParams, useRouteMatch } = router; - -export default function(opts = {}) { - const history = opts.history || createHashHistory(); - const createOpts = { - initialReducer: { - router: connectRouter(history), - }, - setupMiddlewares(middlewares) { - return [routerMiddleware(history), ...middlewares]; - }, - setupApp(app) { - app._history = patchHistory(history); - }, - }; - - const app = create(opts, createOpts); - const oldAppStart = app.start; - app.router = router; - app.start = start; - return app; - - function router(router) { - invariant( - isFunction(router), - `[app.router] router should be function, but got ${typeof router}`, - ); - app._router = router; - } - - function start(container) { - // 允许 container 是字符串,然后用 querySelector 找元素 - if (isString(container)) { - container = document.querySelector(container); - invariant(container, `[app.start] container ${container} not found`); - } - - // 并且是 HTMLElement - invariant( - !container || isHTMLElement(container), - `[app.start] container should be HTMLElement`, - ); - - // 路由必须提前注册 - invariant(app._router, `[app.start] router must be registered before app.start()`); - - if (!app._store) { - oldAppStart.call(app); - } - const store = app._store; - - // export _getProvider for HMR - // ref: https://github.com/dvajs/dva/issues/469 - app._getProvider = getProvider.bind(null, store, app); - - // If has container, render; else, return react component - if (container) { - render(container, store, app, app._router); - app._plugin.apply('onHmr')(render.bind(null, container, store, app)); - } else { - return getProvider(store, this, this._router); - } - } -} - -function isHTMLElement(node) { - return typeof node === 'object' && node !== null && node.nodeType && node.nodeName; -} - -function isString(str) { - return typeof str === 'string'; -} - -function getProvider(store, app, router) { - const DvaRoot = extraProps => ( - {router({ app, history: app._history, ...extraProps })} - ); - return DvaRoot; -} - -function render(container, store, app, router) { - const ReactDOM = require('react-dom'); // eslint-disable-line - ReactDOM.render(React.createElement(getProvider(store, app, router)), container); -} - -function patchHistory(history) { - const oldListen = history.listen; - history.listen = callback => { - // TODO: refact this with modified ConnectedRouter - // Let ConnectedRouter to sync history to store first - // connected-react-router's version is locked since the check function may be broken - // min version of connected-react-router - // e.g. - // function (e, t) { - // var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; - // r.inTimeTravelling ? r.inTimeTravelling = !1 : a(e, t, n) - // } - // ref: https://github.com/umijs/umi/issues/2693 - const cbStr = callback.toString(); - const isConnectedRouterHandler = - (callback.name === 'handleLocationChange' && cbStr.indexOf('onLocationChanged') > -1) || - (cbStr.indexOf('.inTimeTravelling') > -1 && - cbStr.indexOf('.inTimeTravelling') > -1 && - cbStr.indexOf('arguments[2]') > -1); - // why add __isDvaPatch: true - // since it's a patch from dva, we need to identify it in the listen handlers - callback(history.location, history.action, { __isDvaPatch: true }); - return oldListen.call(history, (...args) => { - if (isConnectedRouterHandler) { - callback(...args); - } else { - // Delay all listeners besides ConnectedRouter - setTimeout(() => { - callback(...args); - }); - } - }); - }; - return history; -} - -export fetch from 'isomorphic-fetch'; -export dynamic from './dynamic'; -export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEqual }; -export { bindActionCreators }; -export { router }; -export { saga }; -export { routerRedux }; -export { createBrowserHistory, createMemoryHistory, createHashHistory }; -export { useHistory, useLocation, useParams, useRouteMatch }; diff --git a/.history/packages/dva/src/index_20240506170801.js b/.history/packages/dva/src/index_20240506170801.js deleted file mode 100644 index a473e6eb..00000000 --- a/.history/packages/dva/src/index_20240506170801.js +++ /dev/null @@ -1,147 +0,0 @@ -import React from 'react' -import invariant from 'invariant' -import { createBrowserHistory, createMemoryHistory, createHashHistory } from 'history' -import document from 'global/document' -import { - Provider, - connect, - connectAdvanced, - useSelector, - useDispatch, - useStore, - shallowEqual, -} from 'react-redux' -import { bindActionCreators } from 'redux' -import { utils, create, saga } from 'dva-core' -import * as router from 'react-router-dom' -import * as routerRedux from 'connected-react-router' - -const { connectRouter, routerMiddleware } = routerRedux -const { isFunction } = utils -const { useHistory, useLocation, useParams, useRouteMatch } = router - -export default function (opts = {}) { - const history = opts.history || createHashHistory() - const createOpts = { - initialReducer: { - router: connectRouter(history), - }, - setupMiddlewares(middlewares) { - return [routerMiddleware(history), ...middlewares] - }, - setupApp(app) { - app._history = patchHistory(history) - }, - } - - const app = create(opts, createOpts) - const oldAppStart = app.start - app.router = router - app.start = start - return app - - function router(router) { - invariant( - isFunction(router), - `[app.router] router should be function, but got ${typeof router}`, - ) - app._router = router - } - - function start(container) { - // 允许 container 是字符串,然后用 querySelector 找元素 - if (isString(container)) { - container = document.querySelector(container) - invariant(container, `[app.start] container ${container} not found`) - } - - // 并且是 HTMLElement - invariant(!container || isHTMLElement(container), `[app.start] container should be HTMLElement`) - - // 路由必须提前注册 - invariant(app._router, `[app.start] router must be registered before app.start()`) - - if (!app._store) { - oldAppStart.call(app) - } - const store = app._store - - // export _getProvider for HMR - // ref: https://github.com/dvajs/dva/issues/469 - app._getProvider = getProvider.bind(null, store, app) - - // If has container, render; else, return react component - if (container) { - render(container, store, app, app._router) - app._plugin.apply('onHmr')(render.bind(null, container, store, app)) - } else { - return getProvider(store, this, this._router) - } - } -} - -function isHTMLElement(node) { - return typeof node === 'object' && node !== null && node.nodeType && node.nodeName -} - -function isString(str) { - return typeof str === 'string' -} - -function getProvider(store, app, router) { - const DvaRoot = extraProps => ( - {router({ app, history: app._history, ...extraProps })} - ) - return DvaRoot -} - -function render(container, store, app, router) { - const ReactDOM = require('react-dom/client') // eslint-disable-line - ReactDOM.createRoot(container).render(React.createElement(getProvider(store, app, router))) -} - -function patchHistory(history) { - const oldListen = history.listen - history.listen = callback => { - // TODO: refact this with modified ConnectedRouter - // Let ConnectedRouter to sync history to store first - // connected-react-router's version is locked since the check function may be broken - // min version of connected-react-router - // e.g. - // function (e, t) { - // var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; - // r.inTimeTravelling ? r.inTimeTravelling = !1 : a(e, t, n) - // } - // ref: https://github.com/umijs/umi/issues/2693 - const cbStr = callback.toString() - const isConnectedRouterHandler = - (callback.name === 'handleLocationChange' && cbStr.indexOf('onLocationChanged') > -1) || - (cbStr.indexOf('.inTimeTravelling') > -1 && - cbStr.indexOf('.inTimeTravelling') > -1 && - cbStr.indexOf('arguments[2]') > -1) - // why add __isDvaPatch: true - // since it's a patch from dva, we need to identify it in the listen handlers - callback(history.location, history.action, { __isDvaPatch: true }) - return oldListen.call(history, (...args) => { - if (isConnectedRouterHandler) { - callback(...args) - } else { - // Delay all listeners besides ConnectedRouter - setTimeout(() => { - callback(...args) - }) - } - }) - } - return history -} - -export fetch from 'isomorphic-fetch' -export dynamic from './dynamic' -export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEqual } -export { bindActionCreators } -export { router } -export { saga } -export { routerRedux } -export { createBrowserHistory, createMemoryHistory, createHashHistory } -export { useHistory, useLocation, useParams, useRouteMatch } From b5a3df238dcd432e3860500f5a55b32c1acc56c6 Mon Sep 17 00:00:00 2001 From: yougen Date: Mon, 6 May 2024 17:23:16 +0800 Subject: [PATCH 4/9] build the project with react18 --- docs/guide/source-code-explore.md | 4 ++-- package.json | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/guide/source-code-explore.md b/docs/guide/source-code-explore.md index d276e474..14efe3a7 100644 --- a/docs/guide/source-code-explore.md +++ b/docs/guide/source-code-explore.md @@ -222,8 +222,8 @@ function getProvider(store, app, router) { // 真正的 react 在这里 function render(container, store, app, router) { - const ReactDOM = require('react-dom'); // eslint-disable-line - ReactDOM.render(React.createElement(getProvider(store, app, router)), container); + const ReactDOM = require('react-dom/client') // eslint-disable-line + ReactDOM.createRoot(container).render(React.createElement(getProvider(store, app, router))) } ``` diff --git a/package.json b/package.json index 1b5e6a0e..3734cff1 100644 --- a/package.json +++ b/package.json @@ -42,5 +42,6 @@ "prettier --trailing-comma all --single-quote --write", "git add" ] - } -} + }, + "repository": "git@github.com:jasonzhuang/dva18.git" +} \ No newline at end of file From 1b040e3eff6f95cd5f87dd7629eb99461489f2d0 Mon Sep 17 00:00:00 2001 From: yougen Date: Mon, 6 May 2024 17:38:30 +0800 Subject: [PATCH 5/9] change package.json version to 3.0.0 --- packages/dva/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dva/package.json b/packages/dva/package.json index 6896810f..d958a8ce 100644 --- a/packages/dva/package.json +++ b/packages/dva/package.json @@ -1,6 +1,6 @@ { "name": "dva", - "version": "2.6.0-beta.23", + "version": "3.0.0", "description": "React and redux based, lightweight and elm-style framework.", "main": "dist/index.js", "module": "dist/index.esm.js", From 1e850675be8de473b95e1dcbc9565befb2904dab Mon Sep 17 00:00:00 2001 From: yougen Date: Tue, 7 May 2024 16:49:17 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=B8=8D=E4=BF=AE=E6=94=B9code=20style,=20?= =?UTF-8?q?=E4=B8=8D=E6=89=8B=E5=8A=A8=E6=94=B9=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .prettierrc | 3 +- packages/dva/package.json | 6 +- packages/dva/src/index.js | 119 +++++++++++++++++++------------------- 3 files changed, 66 insertions(+), 62 deletions(-) diff --git a/.prettierrc b/.prettierrc index 5e2863a1..1563a4a5 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { "printWidth": 100, "singleQuote": true, - "trailingComma": "all" + "trailingComma": "all", + "semi": true } diff --git a/packages/dva/package.json b/packages/dva/package.json index d958a8ce..f856e790 100644 --- a/packages/dva/package.json +++ b/packages/dva/package.json @@ -1,6 +1,6 @@ { "name": "dva", - "version": "3.0.0", + "version": "2.6.0-beta.23", "description": "React and redux based, lightweight and elm-style framework.", "main": "dist/index.js", "module": "dist/index.esm.js", @@ -45,8 +45,8 @@ "redux": "^4.0.1" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": ">=18", + "react-dom": ">=18" }, "files": [ "dist", diff --git a/packages/dva/src/index.js b/packages/dva/src/index.js index a473e6eb..774540a4 100644 --- a/packages/dva/src/index.js +++ b/packages/dva/src/index.js @@ -1,7 +1,7 @@ -import React from 'react' -import invariant from 'invariant' -import { createBrowserHistory, createMemoryHistory, createHashHistory } from 'history' -import document from 'global/document' +import React from 'react'; +import invariant from 'invariant'; +import { createBrowserHistory, createMemoryHistory, createHashHistory } from 'history'; +import document from 'global/document'; import { Provider, connect, @@ -10,98 +10,101 @@ import { useDispatch, useStore, shallowEqual, -} from 'react-redux' -import { bindActionCreators } from 'redux' -import { utils, create, saga } from 'dva-core' -import * as router from 'react-router-dom' -import * as routerRedux from 'connected-react-router' +} from 'react-redux'; +import { bindActionCreators } from 'redux'; +import { utils, create, saga } from 'dva-core'; +import * as router from 'react-router-dom'; +import * as routerRedux from 'connected-react-router'; -const { connectRouter, routerMiddleware } = routerRedux -const { isFunction } = utils -const { useHistory, useLocation, useParams, useRouteMatch } = router +const { connectRouter, routerMiddleware } = routerRedux; +const { isFunction } = utils; +const { useHistory, useLocation, useParams, useRouteMatch } = router; export default function (opts = {}) { - const history = opts.history || createHashHistory() + const history = opts.history || createHashHistory(); const createOpts = { initialReducer: { router: connectRouter(history), }, setupMiddlewares(middlewares) { - return [routerMiddleware(history), ...middlewares] + return [routerMiddleware(history), ...middlewares]; }, setupApp(app) { - app._history = patchHistory(history) + app._history = patchHistory(history); }, - } + }; - const app = create(opts, createOpts) - const oldAppStart = app.start - app.router = router - app.start = start - return app + const app = create(opts, createOpts); + const oldAppStart = app.start; + app.router = router; + app.start = start; + return app; function router(router) { invariant( isFunction(router), `[app.router] router should be function, but got ${typeof router}`, - ) - app._router = router + ); + app._router = router; } function start(container) { // 允许 container 是字符串,然后用 querySelector 找元素 if (isString(container)) { - container = document.querySelector(container) - invariant(container, `[app.start] container ${container} not found`) + container = document.querySelector(container); + invariant(container, `[app.start] container ${container} not found`); } // 并且是 HTMLElement - invariant(!container || isHTMLElement(container), `[app.start] container should be HTMLElement`) + invariant( + !container || isHTMLElement(container), + `[app.start] container should be HTMLElement`, + ); // 路由必须提前注册 - invariant(app._router, `[app.start] router must be registered before app.start()`) + invariant(app._router, `[app.start] router must be registered before app.start()`); if (!app._store) { - oldAppStart.call(app) + oldAppStart.call(app); } - const store = app._store + const store = app._store; // export _getProvider for HMR // ref: https://github.com/dvajs/dva/issues/469 - app._getProvider = getProvider.bind(null, store, app) + app._getProvider = getProvider.bind(null, store, app); // If has container, render; else, return react component if (container) { - render(container, store, app, app._router) - app._plugin.apply('onHmr')(render.bind(null, container, store, app)) + render(container, store, app, app._router); + app._plugin.apply('onHmr')(render.bind(null, container, store, app)); } else { - return getProvider(store, this, this._router) + return getProvider(store, this, this._router); } } } function isHTMLElement(node) { - return typeof node === 'object' && node !== null && node.nodeType && node.nodeName + return typeof node === 'object' && node !== null && node.nodeType && node.nodeName; } function isString(str) { - return typeof str === 'string' + return typeof str === 'string'; } function getProvider(store, app, router) { const DvaRoot = extraProps => ( {router({ app, history: app._history, ...extraProps })} - ) - return DvaRoot + ); + return DvaRoot; } function render(container, store, app, router) { - const ReactDOM = require('react-dom/client') // eslint-disable-line - ReactDOM.createRoot(container).render(React.createElement(getProvider(store, app, router))) + const ReactDOM = require('react-dom/client'); // eslint-disable-line + ReactDOM.createRoot(container).render(React.createElement(getProvider(store, app, router))); } function patchHistory(history) { - const oldListen = history.listen + const oldListen = history.listen; history.listen = callback => { // TODO: refact this with modified ConnectedRouter // Let ConnectedRouter to sync history to store first @@ -113,35 +116,35 @@ function patchHistory(history) { // r.inTimeTravelling ? r.inTimeTravelling = !1 : a(e, t, n) // } // ref: https://github.com/umijs/umi/issues/2693 - const cbStr = callback.toString() + const cbStr = callback.toString(); const isConnectedRouterHandler = (callback.name === 'handleLocationChange' && cbStr.indexOf('onLocationChanged') > -1) || (cbStr.indexOf('.inTimeTravelling') > -1 && cbStr.indexOf('.inTimeTravelling') > -1 && - cbStr.indexOf('arguments[2]') > -1) + cbStr.indexOf('arguments[2]') > -1); // why add __isDvaPatch: true // since it's a patch from dva, we need to identify it in the listen handlers - callback(history.location, history.action, { __isDvaPatch: true }) + callback(history.location, history.action, { __isDvaPatch: true }); return oldListen.call(history, (...args) => { if (isConnectedRouterHandler) { - callback(...args) + callback(...args); } else { // Delay all listeners besides ConnectedRouter setTimeout(() => { - callback(...args) - }) + callback(...args); + }); } - }) - } - return history + }); + }; + return history; } -export fetch from 'isomorphic-fetch' -export dynamic from './dynamic' -export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEqual } -export { bindActionCreators } -export { router } -export { saga } -export { routerRedux } -export { createBrowserHistory, createMemoryHistory, createHashHistory } -export { useHistory, useLocation, useParams, useRouteMatch } +export fetch from 'isomorphic-fetch'; +export dynamic from './dynamic'; +export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEqual }; +export { bindActionCreators }; +export { router }; +export { saga }; +export { routerRedux }; +export { createBrowserHistory, createMemoryHistory, createHashHistory }; +export { useHistory, useLocation, useParams, useRouteMatch }; From d2206592cb6617194ee3b4dd9a216eccc620774e Mon Sep 17 00:00:00 2001 From: yougen Date: Tue, 7 May 2024 19:33:00 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=B8=8D=E4=BF=AE=E6=94=B9code=20style,=20?= =?UTF-8?q?=E5=9B=9E=E6=BB=9A=E4=BB=A3=E7=A0=81=E6=A0=B7=E5=BC=8F=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- .prettierrc | 3 +-- packages/dva/src/index.js | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 38355f79..ca9d54ff 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ /packages/**/node_modules /packages/**/dist /lerna-debug.log -.history/ + diff --git a/.prettierrc b/.prettierrc index 1563a4a5..5e2863a1 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,5 @@ { "printWidth": 100, "singleQuote": true, - "trailingComma": "all", - "semi": true + "trailingComma": "all" } diff --git a/packages/dva/src/index.js b/packages/dva/src/index.js index 774540a4..e7175671 100644 --- a/packages/dva/src/index.js +++ b/packages/dva/src/index.js @@ -20,7 +20,7 @@ const { connectRouter, routerMiddleware } = routerRedux; const { isFunction } = utils; const { useHistory, useLocation, useParams, useRouteMatch } = router; -export default function (opts = {}) { +export default function(opts = {}) { const history = opts.history || createHashHistory(); const createOpts = { initialReducer: { From 549d7085901b457b0061c0e26ea8c03dbc5dbb9e Mon Sep 17 00:00:00 2001 From: sorrycc Date: Fri, 10 May 2024 10:04:38 +0800 Subject: [PATCH 8/9] chore: code style --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3734cff1..56149706 100644 --- a/package.json +++ b/package.json @@ -44,4 +44,4 @@ ] }, "repository": "git@github.com:jasonzhuang/dva18.git" -} \ No newline at end of file +} From cee13e924516a55dd34ac4750ae404fb985933c5 Mon Sep 17 00:00:00 2001 From: sorrycc Date: Fri, 10 May 2024 10:05:50 +0800 Subject: [PATCH 9/9] chore: code style --- docs/guide/source-code-explore.md | 2 +- package.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/guide/source-code-explore.md b/docs/guide/source-code-explore.md index 14efe3a7..c9f47b05 100644 --- a/docs/guide/source-code-explore.md +++ b/docs/guide/source-code-explore.md @@ -223,7 +223,7 @@ function getProvider(store, app, router) { // 真正的 react 在这里 function render(container, store, app, router) { const ReactDOM = require('react-dom/client') // eslint-disable-line - ReactDOM.createRoot(container).render(React.createElement(getProvider(store, app, router))) + ReactDOM.createRoot(container).render(React.createElement(getProvider(store, app, router))); } ``` diff --git a/package.json b/package.json index 56149706..1b5e6a0e 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,5 @@ "prettier --trailing-comma all --single-quote --write", "git add" ] - }, - "repository": "git@github.com:jasonzhuang/dva18.git" + } }