2016-10-14 1 views
4

는 네이티브 반응, 내가 지금처럼의 TextInput에서 확장하는 사용자 정의 구성 요소가 사용하는 함수가 아닙니다 반작용 :는 기본 _this2.refs.myinput.focus가

TextBox.js을

... 
render() { 
    return (
    <TextInput 
    {...this.props} 
    style={styles.textBox}/> 
); 
} 
... 

MyScene.js (수입 TextBox.js)

... 
render() { 
    render(
    <View> 
     <TextBox 
     rel='MyFirstInput' 
     returnKeyType={'next'} 
     onSubmitEditing={(event) => { this.refs.MySecondInput.focus(); }}/> 

     <TextBox 
     ref='MySecondInput'/> 
    </View> 
); 
} 

내가 옆에 때 키보드의 응용 프로그램을 누릅니다 구축

_this2.refs.MySecondInput.focus is not a function 

오류가 무엇을 할 수 : MyFirstInput에 초점을 맞추고, 내가 대신 내가 오류를 얻을 초점이 될 MySecondInput을 기대? 그것은 this의 범위와 관련이 있습니까? 감사.

답변

8

이것은 초점이 TextInput의 한 방법이기 때문에 이것은 확장 버전에 존재하지 않기 때문입니다. 당신은 현대적인 반작용 버전 사용이 작업을 수행하고자한다면

focus() { 
    this.refs.textInput.focus(); 
}, 

을하고의 TextInput

render() { 
    return (
    <TextInput 
    {...this.props} 
    ref={'textInput'} 
    style={styles.textBox}/> 
); 
} 
1

아마도 ref가 HTML 요소를 반환하지 않기 때문일 수 있습니다. 나는이 범위에서 아무 것도하지 말아야한다고 생각하지 않는다. 단지 .focus가 함수가 아니므로, .focus가 HTML 요소가 아닌 요소에 존재하지 않기 때문에 아마 실행될 수 없다.

MDN .focus은 HTML 요소 여야한다는 것을 보여줍니다. 아마도 Ref MySecondInput을 기록하고 요소가 있는지 확인해야할까요?

+0

저는 React-Native를 사용하고 있지만 대부분 동일한 원칙이 적용됩니다. 'this.refs.SecondInput'을 콘솔에 기록했고 구성 요소가 반환되어 구성 요소가 반환되었으므로 작동하지 않는'.focus()'함수에 불과합니다. –

+0

그들은 실제로 반응 문서에 대한 refs에 대해 설명 할 때 .focus()를 구현했습니다. 이 [es6 예] (https://facebook.github.io/react/docs/more-about-refs.html)를 살펴보십시오. – Kevin

0

에 심판을 추가

아래로 TextBox.js에 초점 방법을 추가 할 수 있습니다

ref = { ref => this._randomName = ref } 

액세스하려는 경우 방법은

,369를 사용
this._randomName.anyMethod()