Попробуйте вызвать функцию внутри контроллера в реагирующем компоненте.

Я пытаюсь использовать базовый код рабочего стола webtorrent, здесь вы можете проверить код моей ветки: https://github.com/refreex/webtorrent-desktop

Он использует Node.js и Electron

Проблема, с которой я сталкиваюсь, заключается в создании нового контроллера под названием playlists-controller.js и есть функция под названием getAllPlaylists что мне нужно потреблять внутри компонента React под названием playlists-list.js

Я пытаюсь использовать те же концепции, которые использовались ранее, но я не понимаю, как я могу вызвать эту функцию из моего контроллера внутри компонента реакции.

Существует файл с именем main.js где здесь перечислены все функции, которые контроллеры имеют, как эта:

  //Playlists
  'createPlaylist': (name) => controllers.playlists().createPlaylist(name),
  'addAlbumToPlaylist': (infoHash, files) => controllers.playlists().addAlbumToPlaylist(infoHash, files),
  'addSongToPlaylist': (infoHash, file) => controllers.playlists().addSongToPlaylist(infoHash, file),
  'getAllPlaylists': () => controllers.playlists().getAllPlaylists(),

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

Так что в основном на странице playlists-list.js Мне нужно вызвать функцию getAllPlaylists это в playlists-controller.js

Какой хороший подход для этого?

Заранее спасибо.

1 ответ

Это можно сделать двумя способами. Во-первых, передача функции в качестве реквизита этому компоненту, или мы можем экспортировать метод getAllPlaylist и использовать его, импортируя в компонент playlists-lists. Я надеюсь, что это поможет вам решить вашу проблему.

Способ 1:

 class PlaylistController extends React.Component {

    getAllPlaylist = () => {
    alert('Do Something Here As Per Your Requirement!')
    }

    render () {
    return (
        <container>
            <PlaylistList sendFunction={this.getAllPlaylist} />
        </container>
    )
    }
}

Класс PlaylistList расширяет React.Component {

render () {
return (
    <div>
        <button onClick={this.props.sendFunction}>Click Here To Call Playlist-list Function</button>
    </div>
)
}

}

Способ 2:

 class PlaylistController extends React.Component {
   export const getAllPlaylist = ()=>{
    //do something as per the requirement
   }
 }


import {getAllPlaylist} from './playlistController'

class PlaylistList extends React.Component {


    handleClick = () => {
    getAllPlaylist(); 
    }
    render () {
    return (
        <div>
            <button onClick={this.handleClick}>Click Here To Call Playlist-list Function</button>
        </div>
    )
    }

}
Другие вопросы по тегам