Q:

Как правильно передавать методы компонента React другим компонентам

Этот код работает, но по-моему это выглядит странно.
Этот компонент я подключаю в Layout, тем самым он в DOM с самого начала:
let open;
class ModalWindow extends Component {   
  state = {someState: false}
  open = (state) => {
    this.setState({someState: state});
  }
  render() {
    return (JSX);
  }
}

export {open}; //теперь я могу подключить это метод в других компонентах и пользоваться им

export default ModalWindow;

Правильно ли передавать методы таким способом?

A:

class ModalWindow extends Component {
    constructor(props) {
        super(props);
        this.open = this.open.bind(this);
        this.state = {someState:false}
    }
    open =()=>
    {
        let boolName = (this.state.someState == = "false") ? "true" : "false";
        this.setState({someState:boolName});

        render() {
            return (JSX);
        }
    }
    export default ModalWindow;

В типичном приложении React данные передаются сверху вниз (от родителя к потомку) через свойства props. Однако это может оказаться громоздким для определенных типов свойств (тема UI; предпочтения, связнные с локалью), которые требуются для многих компонентов в приложении. Контекст предоставляет способ совместного использования таких значений между компонентами без необходимости явно передавать свойство через каждый уровень  дерева.
Вот ссылка: https://learn-reactjs.ru/core/context, почитайте как можно этот метод в приложении передавать. Если он будет часто применяться, есть смысл сделать его отдельной функцией.

