nerv
nerv copied to clipboard
建议在nerv中自带prop-types
因为nerv要兼容ie8,这样会导致很多依赖包只能用老版本,老版本的代码直接用的react的prop-types,这样会导致编译出错。 比如react-router最后一个兼容ie8的版本,2.3.0就会报错,直接就是使用的react的prop-types
这是其中某一段代码
export { falsy };
import { PropTypes } from 'react';
var func = PropTypes.func;
var object = PropTypes.object;
var arrayOf = PropTypes.arrayOf;
var oneOfType = PropTypes.oneOfType;
var element = PropTypes.element;
var shape = PropTypes.shape;
var string = PropTypes.string;
请问路由应该使用哪个版本呀
抱歉我们之前在忙另一个项目,现在把 prop-types 加了进来。目前是一个空函数,不会起校验的效果 。 还得再想想有没有别的更好的办法。
现在 npm i nervjs@beta
再试一下。(版本号 1.3.0-beta.0)
还缺了default.createClass,
RouterContext里面有一段代码:
var RouterContext = _react2.default.createClass({
报错`
RouterContext.js:43 Uncaught TypeError: _react2.default.createClass is not a function
at Object../node_modules/react-router/lib/RouterContext.js (RouterContext.js:43)
at webpack_require (bootstrap 5f88affe57815cffdd76:19)
at Object../node_modules/react-router/lib/Router.js (Router.js:29)
at webpack_require (bootstrap 5f88affe57815cffdd76:19)
at Object../node_modules/react-router/lib/index.js (index.js:39)
at webpack_require (bootstrap 5f88affe57815cffdd76:19)
at Object../src/page/index.js (index.js:3)
at webpack_require (bootstrap 5f88affe57815cffdd76:19)
at Object.0 (index.js:18474)
at webpack_require (bootstrap 5f88affe57815cffdd76:19)
` 有点好奇,文档上的支持API写的是支持creaClass,而实际上default里是没有的?
@qqw78901
createClass
是一个单独的包,和 prop-types
一样。
{
// ...
resolve: {
alias: {
'react': 'nervjs',
'react-dom': 'nervjs',
// Not necessary unless you consume a module using `createClass`
'create-react-class': "nerv-create-class"
}
}
// ...
}
其实你可以单独打出一个包:
// ./you-path/nerv-ie8.js
const Nerv = require('nervjs')
Nerv.createClass = require('nerv-create-class')
Nerv.PropTypes = require('prop-types')
module.exports = module.exports.default = Nerv
然后在你的 webpack 把 Nerv 或 React alias 到 ./you-path/nerv-ie8.js
。
@yuche 用你单独打包的方法 报 Uncaught TypeError: Cannot set property PropTypes of #<Object> which has only a getter 还是建议给个带router的demo吧