访问所有组件中函数的返回值

时间:2017-05-26 02:24:15

标签: reactjs

我的一个组件(Source.jsx)中有一个返回数组的方法。我想在所有其他组件中访问此数组(例如Article.jsx,它不一定是Source的子组件)。这可能吗?

//Soure.jsx
export default class Source extends React.Component {

  //Returns an array which I want to use in Article.jsx   
getCategories() {
    let sourceCategories = this.fetchAllCategories();
    let sortedCategories = [];
    let index = 0;   
    while(index <= 5){
          sortedCategories.push(sourceCategories[index]);
          index++;
    }  
return sortedCategories; 
  }
}


//Article.jsx
Import Source from '../Source’
let category = Source.getCategories() 
console.log(category) //this is undefined (it says getCategories is not a function)
export default class Article extends React.Component {
  //some methods
}

1 个答案:

答案 0 :(得分:0)

我不认为React组件是这样使用的。这条线肯定是错的。

let category = Source.getCategories() 

我理解它的方式你有两个选择。

  1. 使Source的父组件向其传递prop函数,每当调用getCategories()时,您还应该调用该函数将数组的值传递回父级,然后父级可以将其作为支持其他孩子。不确定你的组件是如何嵌套的,或者你打算如何使用这个值,特别是因为你说你想在所有其他组件中访问这个数组,所以它可能比值得多麻烦。

  2. 以Window.something的样式定义一个全局变量,每次调用getCategories()时,都会将结果数组赋值给该全局变量。现在您可以在任何地方访问它。不用说总是小心使用全局变量并尽量避免使用它们/尽可能少地修改它们。