0
我正在使用altjs作为Flux实现构建React应用程序。当我尝试从前端创建/删除一个项目时,无论我作为参数传递给创建/删除函数,它总是以传递整个状态结束。React CRUD操作始终使用状态
例如:我试图删除id = 1的项目。我点击该项目上的删除,并将该ID传递给组件中的删除功能。该函数再次通过传递ID来调用删除服务。一旦到达存储层,它就具有组件的整个状态,而不仅仅是传递的ID。
我对React/Flux还是比较新的,不知道我在做什么错,或者为什么会发生这种情况。
主要组件删除功能:
deleteItem = (id) => {
console.log(id) //logs out 56b36c34ad9c927508c9d14f
QuestionStore.deleteQuestion(id);
}
此时ID仍然只是ID。
QuestionStore:
import alt from '../core/alt';
import QuestionActions from '../actions/QuestionActions';
import QuestionSource from '../sources/QuestionSource';
class QuestionStore {
constructor() {
this.bindActions(QuestionActions);
this.exportAsync(QuestionSource);
this.loaded = false;
this.modalIsOpen = false;
this.data = [];
this.question = {
"text": '',
"tag": [],
"answer": [],
"company": [],
"createdAt": ''
};
this.error = null;
this.questionAdded = null;
this.questionDeleted = null;
}
onGetQuestions(data) {
if (data === false) {
this.onFailed();
} else {
this.data = data;
this.loaded = true;
}
}
onCreateQuestion(response) {
if (response === false) {
this.onFailed();
} else {
this.questionAdded = response;
}
}
onDeleteQuestion(response) {
if (response === false) {
this.onFailed();
} else {
this.questionDeleted = response;
}
}
onFailed(err) {
this.loaded = true;
this.error = "Data unavailable";
}
}
export default alt.createStore(QuestionStore, 'QuestionStore');
QuestionSource:
import Api from '../services/QuestionApi';
import QuestionActions from '../actions/QuestionActions';
let QuestionSource = {
fetchData() {
return {
async remote(state) {
return Api.getQuestions()
},
success: QuestionActions.getQuestions
}
},
createQuestion(question) {
return {
async remote(question) {
return Api.createQuestion(question)
},
success: QuestionActions.createQuestion
}
},
deleteQuestion(id) {
//id here is an object of the entire state of QuestionStore
return {
async remote(id) {
return Api.deleteQuestion(id)
},
success: QuestionActions.deleteQuestion
}
}
};
export default QuestionSource;
一旦它击中了这一点,现在的id是即使只有ID传递组件的整个状态。
你能不能从第一'deleteItem'方法中的主要成分发布您的活动元素结合,并且控制台日志此外,是否正常?一个人会执行一个会影响商店的行动,而不是相反。 –
@janpieter_z我添加了更多的代码。我知道这个行动应该完成大部分工作,但是,我以这个例子为基础,并且这是他们如何建立的。 – erichardson30
我没有看到对QuestionSource.deleteQuestion的真实调用。你确定它是从商店?你可以发布QuestionActions吗?我想你应该从你的按钮点击绑定中调用一个。 –