Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript `此`绑定在其他文件中定义的函数中_Javascript_React Native - Fatal编程技术网

Javascript `此`绑定在其他文件中定义的函数中

Javascript `此`绑定在其他文件中定义的函数中,javascript,react-native,Javascript,React Native,我有两个文件Home.js和route.js,在routes.js中定义了一个名为componentoroute的函数,该函数返回一个JSX组件。在Home.js文件中导入并调用此函数,我要做的是将this绑定也保留在componentoroute函数中。我试着用Function.prototype.call()和Function.prototype.bind()来实现这一点,但它不起作用 routes.js export function componentToRoute(route) {

我有两个文件Home.js和route.js,在routes.js中定义了一个名为componentoroute的函数,该函数返回一个JSX组件。在Home.js文件中导入并调用此函数,我要做的是将
this
绑定也保留在componentoroute函数中。我试着用Function.prototype.call()和Function.prototype.bind()来实现这一点,但它不起作用

routes.js

export function componentToRoute(route) {
  return (
    <View>
      <SearchInput
        section={route.title}
        onInput={this.filterArray(route.key)}></SearchInput>
      <ListOfEntries
        style={style.list}
        onEntryPress={item =>
          this.props.navigation.navigate('Local', {
            item: item,
          })
        }
        list={this.state[route.key]}></ListOfEntries>
    </View>
  );
}
执行renderScene函数时,它会抛出
this.filterArray未定义
,但是,如果我将函数分配给Home类中的属性,如:

componentRoute=componentorroute

然后调用
this.componentRoute(route)
,函数将正常工作(
this
绑定到正确的对象)

你知道为什么在这种情况下call()和bind()都不能正常工作吗

你知道为什么在这种情况下call()和bind()都不能正常工作吗

使用
call
的正确语法如下

componentToRoute.call(this, route);

如果
组件路由(route)
调用(其中
this
未绑定,因为它只是一个普通函数调用)不会已经抛出关于
this.filterray
的错误,如果调用结果没有
.call
方法,则会出现异常-您正在返回JSX对象。

此处不能使用箭头函数。对于正常的函数声明,
调用
将起作用。componentToRoute不是箭头函数,它是使用
函数
关键字声明的。对不起,我以为这是关于
过滤器阵列
。没错。定义一个简单的方法()并在构造函数内绑定上下文this.method=this.method.bind(this);
componentToRoute(route).call(this);
componentToRoute.call(this, route);