尝试在React组件中调用控制器内部的函数

时间:2019-02-08 04:34:31

标签: javascript node.js electron webtorrent

我正在尝试使用webtorrent桌面的基本代码,在这里您可以检查我的分支的代码: https://github.com/refreex/webtorrent-desktop

它使用Node.js和Electron

我面临的问题是创建一个名为playlists-controller.js的新控制器,并且需要在名为getAllPlaylists的React组件中使用一个名为playlists-list.js的函数

我正在尝试使用以前使用过的相同概念,但是我不明白如何在React组件内部的控制器中调用该函数。

有一个名为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 个答案:

答案 0 :(得分:0)

这可以通过两种方式完成。一种,将功能作为道具传递给该组件,或者我们可以导出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>
    )
    }

}