Javascript `此`绑定在其他文件中定义的函数中
我有两个文件Home.js和route.js,在routes.js中定义了一个名为componentoroute的函数,该函数返回一个JSX组件。在Home.js文件中导入并调用此函数,我要做的是将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) {
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);