Попробуйте вызвать функцию внутри контроллера в реагирующем компоненте.
Я пытаюсь использовать базовый код рабочего стола 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>
)
}
}