如何访问导入模块的其他功能中的道具

时间:2016-08-18 07:49:35

标签: javascript reactjs react-native

假设我创建了一个简单函数的基本模块,如helper.js

export function HelloChandu() { 
   //How to access navigator props from here.
}

export function HelloTester() {
  HelloChandu();
}

然后我在我的组件中导入了此模块import * as Helper from './helper';

在某个元素中,我随后调用了onpress={Helper.HelloTester.bind(this)}所以现在我可以在HelloTester函数中访问this.props,但我无法在HelloChandu函数中访问this.props。

问题:如何从helper.js模块中的任何函数访问this.props?就像有10-20个函数一样,并且我不必作为参数传递。

谢谢

3 个答案:

答案 0 :(得分:1)

我担心如果你想在你的一个函数中访问this.props,你需要明确地传递this或者在使用它们之前将所有函数绑定到当前this

有几种方法可以做到。



function HelloChandu() { 
  alert(this.props);
}

function HelloTester() {  
  HelloChandu.apply(this);
  // HelloChandu.call(this);
  // HelloChandu.bind(this)();
  // this::HelloChandu(); // Experimental!
}

const obj = {
  props: 'my props'
}

HelloTester.bind(obj)()




另一种方法是将所有函数包装在另一个函数中。



function helpers() { 
  const functions = {
    HelloChandu: () => {     
      alert(this.props);
    },

    HelloTester: () => {  
      functions.HelloChandu();    
    }
  };
  return functions;
}

const obj = {
  props: 'my props'
}

helpers.call(obj).HelloTester();




答案 1 :(得分:0)

1.您可以将道具持久保存到AsyncStorage,只要您需要,就可以访问此道具。

2.如果你熟悉闭合,你可以这样做:

function Helper(ps) {

  function test() {
    console.log(ps.sex);
  }

  function test2() {
    console.log(ps.name);
  }

  return {
    test: test,
    test2: test2,
  }
}

var obj = Helper({name: 'abc', sex: 'male'});

obj.test(); 
obj.test2();

然后你应该导出Helper和import Helper from 'Helper.js'

答案 2 :(得分:0)

@Scheduled(fixedRateString = "${update.rate}")
public void update()
{
    System.out.println(this.message);
}