Реагировать на собственную функцию запуска любого внешнего экрана - PullRequest
0 голосов
/ 20 декабря 2018

У меня простой вопрос.Я хочу запустить функцию, созданную в App.js, на другом экране.Каждый экран связан с AppContainer в контексте.Я собираюсь использовать состояние на другом экране, но я не знаю, как это сделать.Можете привести простой пример?

  _setDefaultLocation = locationKey => {
    console.log("call _setDefaultLocation function");
    
    this.setState({ defaultLocation: locationKey });

    console.log(this.state.defaultLocation);

    this._getCurrent(locationKey);
  };

Вышеуказанная функция называется this.props._setDefaultLocation ();Я пытался сделать это, и это не сработало.

import React from "react";

const WeatherContext = React.createContext();

function withWeather(WrappedComponent) {
  return function withContext(props) {
    return (
      <WeatherContext.Consumer>
        {value => <WrappedComponent value={value} {...props} />}
      </WeatherContext.Consumer>
    );
  };
}

export { WeatherContext, withWeather };

Для этого используется контекст.

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете использовать глобальное ключевое слово, чтобы сделать вашу функцию глобальной.Затем вы можете использовать его на любом экране.

Например, предположим, что у вас есть функция под названием «myFunction».Вы можете реализовать свою функцию в App.js следующим образом.

global.myFunction = () => {
    console.warn('I am a global function...')
    // your function body
};

Затем вы можете вызывать эту функцию на любом экране, как и другие вызовы функций.

В вашем случае ваша функция может реализоватьв этом формате.

global._myFunction = locationKey => {
    console.warn('I am a global function...')
    // your function body
};

А когда вы вызываете функцию, вызывайте ее как _myFunction(locationKey).

ПРИМЕЧАНИЕ: locationKey - это параметр, который вы должны передать для своей функции.

Думаю, это решение поможет вам.

...