【问题标题】:'$' is not defined when Replacing JSON with Jquery in ReactJS在 ReactJS 中用 Jquery 替换 JSON 时未定义“$”
【发布时间】:2017-10-31 19:29:49
【问题描述】:

我正在为一个使用 JQuery 从远程源加载 JSON 编码数据的 Web 应用程序学习 ReactJS。

在这个示例中,this.state 被手动设置为 JSON 编码的数据

import React, { Component } from 'react';
import Projects from './Components/Projects';
import './App.css';

class App extends Component {
  constructor(){
    super();
    this.state = {
      projects: [
        {
          title: 'Buisness Website',
          category: 'Web Design'
        },
        {
          title: 'Social App',
          category: 'Mobile Development'
        },
        {
          title: 'Ecommerce Shopping Cart',
          category: 'Web Development'
        }
      ]
    }
  }

  render() {
    return (
      <div className="App">
        My App
        <Projects projects={this.state.projects}/>
      </div>
    );
  }
}

export default App;

我想使用 Jquery 从远程位置加载数据。我试过了

this.state =  $.getJSON('remote.json', function (data) {
        console.log(data);
});

不幸的是,在运行该站点时,我收到一个错误:“$”未定义。我怎样才能解决这个问题?请注意,我包括了

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

在 index.html 的头部

编辑:请记住,JSON 文件不会是本地的。

【问题讨论】:

  • 你忘记了一些 jquery 版本 :)) 为什么你有 2 个 jquery 文件?
  • 你需要从jquery导入$,像这样:import $ from 'jquery';检查这个答案,它会帮助你:stackoverflow.com/a/44259149/5185595
  • @madalin_ivascu 已编辑 :)

标签: javascript jquery json reactjs


【解决方案1】:

据我了解,您想在您的项目中使用 jquery。要解决您的问题,您只需安装 jquery 并将其包含在您的项目中,就像在您的命令行中一样:

npm install --save jquery

然后在使用 jquery 的文件上,导入它:

import $ from 'jquery';

您似乎正在尝试根据getJSON 方法的结果设置状态,正确的做法是这样的:

$.getJSON('remote.json',(data) => {
  this.setState({ myStateData: data })
});

另一种方法是使用fetch,您的代码将如下所示:

fetch('remote.json').then(data =&gt; this.setState({ myStateData: data }));

以上示例假设您的状态具有属性 myStateData。

【讨论】:

  • 现在完美运行。
【解决方案2】:

你可以配置你的 webpack,而不是使用 Jquery 来加载 localJSON 文件

首先安装json-loader

npm i json-loader --save-dev

然后用这个加载器配置你的 webpack

loaders: [
  { test: /\.json$/, loader: 'json' },
  // other loaders 
]

现在你可以在你的文件中导入你的json了

   import remote from '.path/to/remote.json';

但是,如果您的 json 文件是远程的,您有多种选择来执行 ajax 请求

您可以使用 axiosnode-fetchjquery 等软件包

由于您使用的是 jquery ,您应该安装

   npm install -S jquery

并导入为

  import $ from 'jquery'

【讨论】:

  • 如果 JSON 文件不是本地文件,这会起作用吗?出于测试目的,我一直将其保留在本地,但最终我想从服务器中检索它。很抱歉造成混乱。
  • 不,它不会工作,对于远程文件。在这种情况下,最好使用 npm 包 node-fetch 或 axios 进行 ajax 请求。
猜你喜欢
  • 2017-06-10
  • 1970-01-01
  • 2016-12-22
  • 2020-11-16
  • 2012-03-19
  • 1970-01-01
  • 2023-03-23
  • 2015-04-04
  • 1970-01-01
相关资源
最近更新 更多