Javascript 如何将状态值从一个组件访问到另一个单独文件中的函数(不是组件)?反应js
这是我的主页组件:Javascript 如何将状态值从一个组件访问到另一个单独文件中的函数(不是组件)?反应js,javascript,reactjs,function,react-native,components,Javascript,Reactjs,Function,React Native,Components,这是我的主页组件: import React from 'react'; import { getData } from '../../../util/network'; export default class Home extends React.Component { constructor(props) { super(props); this.state = { page: 1, }; } async componentWillMou
import React from 'react';
import { getData } from '../../../util/network';
export default class Home extends React.Component {
constructor(props) {
super(props);
this.state = {
page: 1,
};
}
async componentWillMount() {
const val = await getData();
}
render() {
return() {
// jsx stuffs
}
}
}
这是一个名为network.js://的文件,它是一个函数
export const getData = () => {
const { page } = this.state; // this is undefined now
const url = `http://randomuser.in/${page}`;
fetch(url)
.then(res => res.json())
.then(res => {
return res;
})
.catch(error => {
console.log('error:', error);
});
};
如何访问my network.js文件中页面的状态值?您应该将
页面的状态作为参数传递给函数:
async componentDidMount() {
const val = await getData(this.state.page);
}
请注意,我将componentWillMount
替换为componentDidMount
,后者更适合执行异步操作
export const getData = (page) => {
const url = `http://randomuser.in/${page}`;
fetch(url)
.then(res => res.json())
.then(res => {
return res;
})
.catch(error => {
console.log('error:', error);
});
};
您应该将页面
状态作为参数传递给函数:
async componentDidMount() {
const val = await getData(this.state.page);
}
请注意,我将componentWillMount
替换为componentDidMount
,后者更适合执行异步操作
export const getData = (page) => {
const url = `http://randomuser.in/${page}`;
fetch(url)
.then(res => res.json())
.then(res => {
return res;
})
.catch(error => {
console.log('error:', error);
});
};
您不应该依赖函数中的这个状态。这不是一个好的做法。您只需在该函数中传递所需的参数
示例
const val = await getData(this.state.page);
您不应该依赖函数中的这个状态。这不是一个好的做法。您只需在该函数中传递所需的参数
示例
const val = await getData(this.state.page);
如果希望访问状态,则getData()函数必须是组件类中的方法。组件状态仅存在于该组件中。或者将状态作为参数传递给getData()
是否有任何方法?从单独的文件访问据我所知,您无法从一些随机的不相关的JS文件访问组件状态。要么将其作为参数传递,要么将getData
函数嵌入到组件中如果希望访问状态,则getData()函数必须是组件类中的方法。组件状态仅存在于该组件中。或者将状态作为参数传递给getData()
是否有任何方法?从单独的文件访问据我所知,您无法从一些随机的不相关的JS文件访问组件状态。要么将其作为参数传递,要么将getData
函数嵌入componentIf i put console,以在network.js中翻页,它会告诉我“未定义”。您是否将参数像这样传递给getData:getData(this.state.page)代码>?如果我把控制台放到network.js中的page,它会告诉我“未定义”。您是否像这样将参数传递给getData:getData(this.state.page)代码>?如果我在network.js中放置console,page会告诉我“未定义”。请确保将参数传递给函数,并确保其定义了某个值。如果我在network.js中放置console,page会告诉我“未定义”。请确保将参数传递给函数,并确保其定义了某个值。