Javascript 从外部函数React获取数据结果
我有一个从json文件获取数据的外部函数,我想用这个函数为我的组件提供问题数据,我如何管理它工作 以下是我尝试过的,但不起作用: 组成部分: screens/QuizzQuestion.jsJavascript 从外部函数React获取数据结果,javascript,reactjs,react-native,ecmascript-6,Javascript,Reactjs,React Native,Ecmascript 6,我有一个从json文件获取数据的外部函数,我想用这个函数为我的组件提供问题数据,我如何管理它工作 以下是我尝试过的,但不起作用: 组成部分: screens/QuizzQuestion.js 从“React”导入React,{Component}; 从“react native”导入{视图、文本、样式表、按钮}; 从“../utils/utils”导入{getQuestionData} 导出默认类QuizzQuestion扩展组件{ 建造师(道具){ 超级(道具); 此.state={ 信息:
从“React”导入React,{Component};
从“react native”导入{视图、文本、样式表、按钮};
从“../utils/utils”导入{getQuestionData}
导出默认类QuizzQuestion扩展组件{
建造师(道具){
超级(道具);
此.state={
信息:空
};
}
loadData(){
getQuestionData(2)。然后(数据=>{
this.setState({info:data})
});
}
componentDidMount(){
这是loadData();
}
外部功能:
/utils/utils.js
从“./assets/questions/questions.json”导入*作为数据;
导出函数getQuestionData(n){
返回数据。问题[n];
}
我每次都会犯这样的错误:
TypeError:TypeError:(0,_utils.getQuestionData)(0)。then不是函数。(在“(0,_utils.getQuestionData)(0)中)。then(函数(数据){
_这是2.5秒状态({
信息:数据
});
})“,”(0,_utils.getQuestionData)(0)。然后是未定义的)
*screens\QuizzQuestion.js:20:28在loadData中
*screens\QuizzQuestion.js:26:4在componentDidMount中
-commitLifeCycles中的节点\u modules\react native\Libraries\Renderer\oss\reactiverenderer-dev.js:15036:10
-提交生命周期中的节点\u modules\react native\Libraries\Renderer\oss\reactnativerender-dev.js:16636:8
-来自框架内部的另外18个堆栈帧是同步的,不是承诺。因此,您只需将来自
getQuestionData
的返回值分配到所需的状态属性中
loadData(){
const data = getQuestionData(2);
this.setState({ info: data });
}
这将返回数据对象中问题数组中的问题。它不会返回承诺。因此,当您尝试使用它时,它会像返回承诺一样
getQuestionData(2).then(data => {
this.setState({ info: data })
});
…它将中断并产生该错误
因此,只需抓住问题并设置如下状态:
const question = getQuestionData(2);
this.setState({ info: question });
或者-注意,没有理由这样做-使函数:
const data={问题:['Question1','Question2','Question3']};
异步函数getQuestionData(n){
返回数据。问题[n];
}
getQuestionData(2).then(q=>console.log(q));
getQuestionData
不会返回承诺,但您会尝试像这样使用它。loadData(){this.setState({info:getQuestionData(2)});}
const question = getQuestionData(2);
this.setState({ info: question });