【发布时间】:2017-07-20 23:06:15
【问题描述】:
我想使用 jquery keyboard.js 从文本区域获取用户输入。
我正在使用的键盘:https://github.com/Mottie/Keyboard
这些是我文件中的导入:
import React from "react";
import ReactDOM from 'react-dom';
import classnames from 'classnames';
import jQuery from 'jquery';
import keyboard from '../../../../node_modules/virtual-keyboard/dist/js/jquery.keyboard.js';
这是我的代码:
export default class KEyboard extends React.Component {
...
componentDidMount() {
...
jQuery(ReactDOM.findDOMNode(this.refs.keyboard)).keyboard(this.props.options);
this.refs.keyboard 很好。已经调试过了。同 this.props.options
这是我的 webpack.config.js
var path = require('path');
const validate = require('webpack-validator');
var config = {
entry: './src/index.js',
output: {
path: __dirname,
filename: 'bundle.js'
},
devtool: 'source-map',
eslint: {
configFile: './.eslintrc'
},
module: {
preLoaders: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'eslint-loader'
},
],
loaders: [
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
include: path.join(__dirname, 'src'),
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
},
{
test: /\.css$/,
loader: 'style-loader'
},
{
test: /\.css$/,
loader: 'css-loader',
query: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
},
/*
{
test: /\.scss$/,
loaders: ['style', 'css', 'sass']
},
*/
{
test: /\.scss$/,
loader: 'style-loader'
},
{
test: /\.scss$/,
loader: 'css-loader',
query: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
},
{
test: /\.scss$/,
loader: 'sass-loader'
},
/*
{
test: /\.js$/,
exclude: /node_modules/,
loaders: ['babel-loader', 'eslint-loader']
}
*/
{
test: /\.(jpg|png)$/,
loader: 'file-loader?name=[path][name].[hash].[ext]'
},
]
},
};
module.exports = validate(config);
【问题讨论】:
-
您是否以除
import之外的任何其他方式加载jQuery? -
不看你的 webpack 配置就无法回答。您可能在 componentDidMount 中引用了不同的 jQuery (window.jQuery) 实例,而不是本地(导入)范围内的实例。尝试 import jq from 'jQuery',使用它,看看会发生什么。即使这确实有效,您也不应该在任何给定时间运行两个 jQuery 实例。您应该使用 webpack.ProvidePlugin 将其注入全局范围,就像这样。
-
谢谢@natnai,我在我的 html 文件中加载了 Jquery,但是在我删除它之后,jquery UI 开始给我带来问题。我尝试将 jQuery 更改为 jq,但它也不起作用
-
那么你需要做的就是使用
ProvidePlugin。
标签: javascript jquery reactjs keyboard