当前位置: 首页 > 知识库问答 >
问题:

在react native中隐藏/显示组件

劳烨
2023-03-14

我对React Native非常陌生,我想知道如何隐藏/显示组件
这是我的测试用例:

<TextInput
    onFocus={this.showCancel()}
    onChangeText={(text) => this.doSearch({input: text})} />

<TouchableHighlight 
    onPress={this.hideCancel()}>
    <View>
        <Text style={styles.cancelButtonText}>Cancel</Text>
    </View>
</TouchableHighlight>

我有一个TextInput组件,我想要的是当输入获得焦点时显示TouchableHighlight,然后当用户按下取消按钮时隐藏TouchableHighlight

我不知道如何“访问”TouchableHighlight组件,以便在我的函数中隐藏/显示它showCancel/hideCancel
另外,如何从一开始就隐藏按钮?

共有3个答案

谢学名
2023-03-14

在react或react native中,组件隐藏/显示或添加/删除的方式与android或iOS中的方式不同。我们大多数人都认为会有类似的策略,比如

View.hide = true or parentView.addSubView(childView)

但是本地工作的方式是完全不同的。实现这种功能的唯一方法是在DOM中包含组件或从DOM中删除组件

在本例中,我将基于按钮单击设置文本视图的可见性。

这个任务背后的想法是创建一个名为state的状态变量,当按钮单击事件发生时,初始值设置为false,然后值切换。现在我们将在组件的创建过程中使用这个状态变量。

import renderIf from './renderIf'

class FetchSample extends Component {
  constructor(){
    super();
    this.state ={
      status:false
    }
  }

  toggleStatus(){
    this.setState({
      status:!this.state.status
    });
    console.log('toggle button handler: '+ this.state.status);
  }

  render() {
    return (
      <View style={styles.container}>
        {renderIf(this.state.status)(
          <Text style={styles.welcome}>
            I am dynamic text View
          </Text>
        )}

        <TouchableHighlight onPress={()=>this.toggleStatus()}>
          <Text>
            touchme
          </Text>
        </TouchableHighlight>
      </View>
    );
  }
}

在这段代码中唯一需要注意的是renderIf,它实际上是一个函数,它将根据传递给它的布尔值返回传递给它的组件。

renderIf(predicate)(element)

伦德里夫。js

'use strict';
const isFunction = input => typeof input === 'function';
export default predicate => elemOrThunk =>
  predicate ? (isFunction(elemOrThunk) ? elemOrThunk() : elemOrThunk) : null;
湛联
2023-03-14

我会这样做:

var myComponent = React.createComponent({

    getInitialState: function () {
        return {
            showCancel: false,
        };
    },

    toggleCancel: function () {
        this.setState({
            showCancel: !this.state.showCancel
        });
    }

    _renderCancel: function () {
        if (this.state.showCancel) {
            return (
                <TouchableHighlight 
                    onPress={this.toggleCancel()}>
                    <View>
                        <Text style={styles.cancelButtonText}>Cancel</Text>
                    </View>
                </TouchableHighlight>
            );
        } else {
            return null;
        }
    },

    render: function () {
        return (
            <TextInput
                onFocus={this.toggleCancel()}
                onChangeText={(text) => this.doSearch({input: text})} />
            {this._renderCancel()}          
        );
    }

});
诸葛文博
2023-03-14

在渲染函数中:

{ this.state.showTheThing && 
  <TextInput/>
}

那么就做:

this.setState({showTheThing: true})  // to show it  
this.setState({showTheThing: false}) // to hide it
 类似资料:
  • 问题内容: 我们现在在使用React时遇到了一些问题,但这 有点 归结于我们如何使用React的一部分。 我们应该如何显示/隐藏子组件? 这就是我们的编码方式(这只是组件的片段)… 最近,我一直在阅读一些示例,例如应该沿着以下方向进行: 我应该一直在使用那个React.render()吗?似乎停止了各种各样的事情,如级联到孩子和诸如… 问题答案: 我提供了一个工作示例,它遵循您的第二种方法。更新组

  • 主要内容:实例,jQuery hide() 和 show(),实例,实例,实例,jQuery toggle(),实例隐藏、显示、切换,滑动,淡入淡出,以及动画,哇哦! 因为时间是宝贵的,我们提供快捷方便的学习方法。 在小牛知识库,你可以学习需要的知识。 实例 jQuery hide() 简单的jQuery hide()方法演示。 jQuery hide() 另一个hide()实例。演示如何隐藏文本。 jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和

  • 问题内容: 我有一个包含几列的HTML表,我需要使用jquery实现一个列选择器。当用户单击复选框时,我要隐藏/显示表中的相应列。我想在不将类附加到表中的每个td的情况下执行此操作,是否可以使用jquery选择整个列?以下是HTML的示例。 问题答案: 我想做到这一点而不必在每个td上附加一个类 就个人而言,我会采用“每课时听课/课时/上课”的方法。然后,您可以通过对容器上的className的一

  • 我正在开发包含2个片段的应用程序,我想根据需要显示隐藏。下面的代码有一个简单的例子来说明我的问题。这个简单的Fragmentactivity包含一个按钮和一个listfragment。 这个简单的例子完美无瑕。但我不满足于展示隐藏片段。如果删除布局。设置可见性(View.GONE);然后从代码中选择ft.hide(f);不会隐藏碎片。事实上,我们不是在隐藏片段,而是在隐藏容器。 我的问题是,这是一

  • 排除不显示字段 Model.findAll({ attributes: { exclude: ['baz'] } });

  • 提供显示/隐藏元素的功能。 标题 内容 类型 通用 支持布局 responsive,fixed-height,fill,container,fixed 所需脚本 https://c.mipcdn.com/static/v2/mip-toggle/mip-toggle.js 示例 基本使用 你可以使用事件 toggle, show 或 hide 以控制 mip-toggle 组件的显示与隐藏。 <b