组件转发呼叫子

时间:2018-01-29 22:25:23

标签: reactjs react-native

我是新人,他反应原生,并且很难想到不使用继承,而是使用继承。

我的场景:我正在创建一个显示一个InputText的组件(focusedTextInput)。我的组件只是添加了改变焦点上TextInput样式的功能。

我在另一个包含五个focusedTextInput的组件中使用FocusedTextInput,我将它们配置为一次只有一个字符,并在输入字符时自动跳转到下一个FocusedTextInput(使用focus()方法)。

我遇到问题的地方是我的FocusedTextInput没有焦点方法(我不想公开TextInput)。

那么我是否需要在FocusedTextInput上展示可能从TextInput使用的所有方法,还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

关于堆栈溢出,请参阅此答案React set focus on input after render

我认为这适用于本地反应,但它确实在网络中有效。

它向您展示了如何将ref设置为组件。并且在CDM中将重点放在该组件上。

扩展它的工作方式,以便你可以将焦点设置为特定的输入(如果有很多)是添加一个名为setFocused的道具

将CDM更改为

 // Set the focus on first render.    
componentDidMount(){
    if (this.props.setFocus) {
       this.nameInput.focus();
    }
}

// focus if the prop changes
componentWillRecieveProps(nextProps) {
    if (this.nextProps.setFocus) {
       this.nameInput.focus();
    }
}