这是我的代码
const data = () => fetch("https://api.myjson.com/bins/mp441")
.then(response => response.json())
.then(obj => data = obj);
const RECORD_NOS=Object.keys(data).length-1;
export {data, RECORD_NOS}

我正在尝试将json数据保存在上面的url中,将数据保存在变量中并将其导出以便在我的React应用程序中的各个位置使用,但不幸的是它会出现以下错误。
./src/resources/index.js
Syntax error: D:/Users/kumahay/Documents/lending-referrals-app/src/resources/index.js: "data" is read-only
1 | const data = () => fetch("https://api.myjson.com/bins/mp441")
2 | .then(response => response.json())
> 3 | .then(obj => data = obj);
| ^
4 |
5 | const RECORD_NOS=Object.keys(data).length-1;
6 |

我尝试过控制台日志记录而不是分配数据,但它不起作用。显然数据没有被提取。如何更好地构建此代码以使其按预期工作?我是javaScript的初学者,所以任何帮助都将受到赞赏。
答案 0 :(得分:4)
我认为你应该阅读更多有关异步函数,Promises和fetch的内容。最好的方法是导出getData
函数,删除.then(obj => data = obj)
并在任何其他模块中使用它
getData.js
export const getData = () => fetch("https://api.myjson.com/bins/mp441")
.then(response => response.json())
anyOtherFile.js
import {getData} from './path/to/getData.js';
export const someFunc = () => {
getData().then(data => {
/* do what you want to do in promise resolve callback function */
})
}
或使用async / await表示法
getData.js
export const getData = async () => fetch("https://api.myjson.com/bins/mp441")
.then(response => response.json())
anyOtherFile.js
import {getData} from './path/to/getData.js';
export const someFunc = async () => {
const data = await getData();
}
答案 1 :(得分:-1)
请将数据名称更改为响应数据,而不是 常用变量。常量不能被覆盖但是可变 可以。
示例:
var data ="某事&#34 ;;
const name ="Japarsathik";
var salary = "$5000";