您好我正在尝试使用触发器更新数据,但它无法正常工作我是新的反应和回流我的部分代码是:
import Reflux from 'reflux'
import $ from 'jquery'
import PeopleActions from '../actions/PeopleActions.js'
let PeopleStore = Reflux.createStore({
listenables: [PeopleActions],
fetchPeople: function (){
$.ajax({
url: 'https://randomuser.me/api',
dataType: 'json'
})
.done(function(peoples){
let people = peoples.results
this.trigger(people)
})
}
})
module.exports = PeopleStore
给我下一个错误:
PeopleStore.js?13fb:14 Uncaught TypeError: this.trigger is not a function
at Object.eval (eval at <anonymous> (app.js:2617), <anonymous>:27:9)
at fire (eval at <anonymous> (app.js:2623), <anonymous>:3317:31)
at Object.fireWith [as resolveWith] (eval at <anonymous> (app.js:2623), <anonymous>:3447:7)
at done (eval at <anonymous> (app.js:2623), <anonymous>:9272:14)
at XMLHttpRequest.eval (eval at <anonymous> (app.js:2623), <anonymous>:9514:9)
答案 0 :(得分:0)
你所拥有的是Store
概念和Actions
概念的奇怪组合。这些是通量流的两个相关但不同的方面。我建议找一个反流指南,并密切关注这些概念之间的区别。
具体来说,您的函数fetchPeople
是一个操作,而不是一个处理程序。商店希望有一个名为onFetchPeople
的不同方法,其定义与您所写的方法截然不同。
鉴于&#34;触发器&#34;的概念,您完全可以预料到错误。功能仅存在于操作而非存储。但除此之外,试图从内部触发行动并没有多大意义。
答案 1 :(得分:0)
你正在使用Reflux工作的旧方式。它应该是这样的:
export default class PeopleStore extend Reflux.Store {
constructor() {
super();
this.listenables = PeopleActions;
}
fetchPeople() {
$.ajax({
url: 'https://randomuser.me/api',
dataType: 'json'
})
.done((peoples) => {
let people = peoples.results
this.setState(people)
})
}
触发PeopleActions.fetchPeople()
,任何侦听PeopleActions的商店都会从商店内触发fetchPeople
或onFetchPeople
,具体取决于存在哪些功能。