ReactNative开发——组件的引用

ReactNative开发——组件的引用

定义组件的引用

<TextInput ref='aReferName'
...

使用组件

根据引用调用组件的方法

this.refs.aReferName.公开函数()

示例

render() {
    return (
        <View style={{flex: 1, justifyContent: 'flex-start'}}>
            <TextInput
                ref='et' //设置该组件的引用为 et
                style={styles.textInputStyle}
            />

            <TextInput style={{height: 80, margin: 10}}

            />
            {/*通过组件的引用,调用组件的公开成员函数*/}
            <Button title="点击让第一个TextInput获取焦点" onPress={() => this.refs.et.focus()}/>

        </View>
    );
}

上面代码实现了:点击按钮,让第一个TextInput组件获取焦点的效果。

获取组件的位置信息

每个ReactNative组件都已个measure成员函数,用来获取组件的位置信息。
示例:

export default class Project07 extends Component {

    componentDidMount() {
        //  window.setTimeout(this.tempFunc.bind(this), 1);
        // 使用箭头函数可以绑定this
        window.setTimeout(() => {
            this.refs.et.measure(this.getTextInputPosition)
        }, 1)

    }

   /**
    * 组件的位置信息回调
    * 
    */
    getTextInputPosition(fx, fy, width, height, px, py) {
        console.log('Component width is ' + width);
        console.log('Component height is ' + height);
        console.log('X offset to frame: ' + fx);
        console.log('Y offset to frame: ' + fy);
        console.log('X offset to page: ' + px);
        console.log('Y offset to page: ' + py);
    }

    tempFunc() {
        this.refs.et.measure(this.getTextInputPosition)
    }

    render() {
        return (
            <View style={{flex: 1, justifyContent: 'flex-start'}}>
                <TextInput
                    ref='et' //设置该组件的引用为 et
                    style={styles.textInputStyle}
                />

                <TextInput style={{height: 80, margin: 10}}

                />
                {/*通过组件的引用,调用组件的公开成员函数*/}
                <Button title="点击让第一个TextInput获取焦点" onPress={() => this.refs.et.focus()}/>

            </View>
        );
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值