gpt4 book ai didi

javascript - .keyboard 与 React 一起使用时不是一个函数

转载 作者:行者123 更新时间:2023-12-03 04:53:40 25 4
gpt4 key购买 nike

我想使用 jquery Keyboard.js 从文本区域获取用户输入。

我正在使用的键盘:https://github.com/Mottie/Keyboard

这是我收到的错误: enter image description here

这些是我在文件中的导入:

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);

最佳答案

使用ProvidePlugin

...

plugins: [ new webpack.ProvidePlugin({ jQuery: 'jquery', $: 'jquery' }) ]

...

然后在您的组件中,只需引用 jQuery,就好像它是 window 对象上的全局变量一样。您可以对 jquery-ui 执行相同的操作。不要导入它。 jquery 已经在全局范围内,然后在模块中重新导入,并且在模块中行为不正确,这一事实似乎表明存在冲突。

ProvidePlugin 将导致依赖于 jQuery 的所有其他模块从 jQuery 的单个全局实例扩展。这应该可以解决你的问题。这应该可以解决 jquery-ui 问题和您当前的问题。确保将其从您的 html 模板中删除。

参见webpack documentation了解更多详情。

关于javascript - .keyboard 与 React 一起使用时不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42534817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com