【问题标题】:Passing reference outside of function在函数之外传递引用
【发布时间】:2018-04-26 01:51:28
【问题描述】:

我正在使用https://github.com/futurepress/react-native-static-server。有两个函数,server.start() 用于启动服务器,server.stop() 用于停止服务器。 从函数启动服务器在_startServer() 中完成。但是,我将如何停止服务器 (_stopServer())?我不确定如何正确地将对服务器的引用传递给_stopServer()

export default class Foo extends Component {

    _startServer = () => {
        server.start()
            .then((localServer) => {
                this.setState({
                    serverRunning: true,
                    localServer: localServer
                })
            });
     }

     _stopServer = (refToServer) => {
          refToServer.stop();
     }

     ...

     render() {
         return (
            <TouchableOpacity
                onPress={() => this._startServer()} />

            <TouchableOpacity
                onPress={() => this._stopServer(??)} />
         )
     }
}

【问题讨论】:

  • 如果你可以简单地使用server.stop(),为什么还需要传递任何东西?
  • @dfsq 因为我在_startServer() 中初始化了server。当我尝试在_stopServer() 中访问server 时,server 超出范围(?)因此我无法调用server.stop()
  • 然后将其存储为实例属性。
  • @dfsq 你的意思是this.setState({server: server})?
  • 不,我的意思是实例属性。 this.server = ....

标签: javascript asynchronous react-native promise


【解决方案1】:

您通过此调用将 localServer 分配给组件的状态:

this.setState({
               serverRunning: true,
               localServer: localServer
           })

所以,您可以使用this.state.localServer 获取服务器并使用this.state.localServer.stop() 停止它

类似这样的:

_stopServer = () => {
          this.state.localServer.stop();
     }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2022-01-11
    • 2014-03-05
    • 1970-01-01
    • 2011-08-23
    • 2023-03-13
    相关资源
    最近更新 更多