Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将状态值从一个组件访问到另一个单独文件中的函数(不是组件)?反应js_Javascript_Reactjs_Function_React Native_Components - Fatal编程技术网

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会告诉我“未定义”。请确保将参数传递给函数,并确保其定义了某个值。