【发布时间】:2017-03-14 20:28:22
【问题描述】:
我正在创建一个名为 Supernova 的反应包。因此,在我使用此包(带有 npm 链接)的其他项目中,此错误显示在控制台中:
只有 ReactOwner 可以有 refs。您可能正在将 ref 添加到 不是在组件的
render方法中创建的组件, 或者你加载了多个 React 副本
这是我的 Supernova webpack 配置:
const webpack = require('webpack')
const ExtractTextPlugin = require("extract-text-webpack-plugin")
module.exports = {
entry: './src/index.js',
output: {
library: 'Supernova',
libraryTarget: 'umd',
path: __dirname + '/build',
filename: 'index.js',
},
externals: [
{
react: {
root: 'React',
commonjs2: 'react',
commonjs: 'react',
amd: 'react'
}
}
],
module: {
loaders: [
{ test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel' },
{
test: /\.(scss|sass|css)$/,
loader: ExtractTextPlugin.extract("style", "css!sass")
},
{
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader?limit=10000&name=fonts/[hash].[ext]'
}
]
},
resolve: {
extensions: ['', '.js', '.jsx']
},
node: {
Buffer: false
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new ExtractTextPlugin("[name].css"),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
})
]
}
而我的组件方法render是:
render() {
return (
<div className="sn-search-box">
{this.renderSelecteds()}
<input
ref="input"
type="text"
className="sn-search-box__input"
placeholder={this.props.label} autoComplete="off"
onFocus={this.handleInputFocus.bind(this)}
onBlur={this.handleInputBlur.bind(this)}/>
<span className="sn-search-box__input--icon"></span>
{this.state.hasFocus ? this.renderResults() : null}
{this.renderHelpMessage()}
</div>
)
}
我的超新星 package.json
"peerDependencies": {
"react": "^15.3.0",
"react-dom": "^15.3.0"
},
"dependencies": {
"material-design-icons": "^2.2.3"
},
"devDependencies": {
"autoprefixer": "^6.3.7",
"babel-cli": "^6.10.1",
"babel-core": "^6.10.4",
"babel-jest": "^13.2.2",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.9.0",
"babel-preset-react": "^6.11.1",
"babel-preset-stage-0": "^6.5.0",
"babel-register": "^6.9.0",
"css-loader": "^0.23.1",
"extract-text-webpack-plugin": "^1.0.1",
"file-loader": "^0.9.0",
"jest-cli": "*",
"node-sass": "^3.8.0",
"react-addons-test-utils": "~15.1.0",
"sass-loader": "^4.0.0",
"style-loader": "^0.13.1",
"url-loader": "^0.5.7",
"webpack": "^1.12.14",
"react": "^15.3.0",
"react-dom": "^15.3.0"
},
【问题讨论】:
-
不推荐使用字符串引用,尝试使用该函数,看看是否可以解决任何问题facebook.github.io/react/docs/refs-and-the-dom.html
-
有效!谢谢!!!!
标签: node.js reactjs webpack package