【问题标题】:How to expand search bar after presses on search icon按下搜索图标后如何展开搜索栏
【发布时间】:2019-01-05 17:56:09
【问题描述】:

我以某种方式通过组件创建了一个搜索图标,我只想知道当有人按下它时如何扩展搜索栏图标..

  import { TouchableOpacity,View, Image} from 'react-native';
  import { SearchBar } from 'react-native-elements';
  export default class Search extends Component{
     onClick(){
      return <SearchBar/> // [![Seach Image][1]][1]not working
}

render(){
    // not worrking
    let search = <SearchBar/>;
    return(
        <View>
            <TouchableOpacity
                onPress={() => {
                    return search
                }}
            >
                <Image
                    source={require('../images/tabs/search.png')}
                    style={{height: 40, width: 60}}
                    resizeMode={'contain'}
                />
            </TouchableOpacity>
        </View>
     )
   }
 }

【问题讨论】:

  • 这就是您要找的吗? codesandbox.io/s/3vrly046k5
  • @AravindS 不,那是什么......
  • 这是一个展示如何为宽度设置动画的示例
  • 是的,我希望图标展开并接受用户输入..但它覆盖了标题标题,,所以看起来很奇怪..
  • 用动画试试

标签: javascript reactjs react-native


【解决方案1】:

你应该给你的组件添加一个状态来控制标题的行为

import { TouchableOpacity, View, Image } from 'react-native';
import { SearchBar } from 'react-native-elements';
export default class Search extends Component {
  constructor(props) {
    super(props);
    this.onClick = this.onClick.bind(this);
    this.state = {
      showSearchBar: false, // control what ever to render the searchbar or just the icon
    };
  }
  onClick() {
    let { showSearchBar } = this.state;
    this.setState({
      showSearchBar: !showSearchBar,
    });
  }

  render() {
    const { showSearchBar } = this.state;
    return (
      <View>
        {!showSearchBar ? (
          <TouchableOpacity onPress={this.onClick}>
            <Image
              source={require('../images/tabs/search.png')}
              style={{ height: 40, width: 60 }}
              resizeMode={'contain'}
            />
          </TouchableOpacity>
        ) : (
          <SearchBar />
        )}
      </View>
    );
  }
}

【讨论】:

  • 它说 undefined 不是一个对象(评估 this.state.showSearchBar)
  • 绑定onClick方法保存上下文
  • 它工作了,但看起来有点奇怪..如果我想搜索我知道的每一个项目我该怎么做我朋友..
  • 它都与状态有关,因此从状态呈现您的项目,然后在搜索栏中输入时过滤项目并使用过滤器的结果更改状态。如果您提出其他问题,我会给您更准确的答案。
  • 我做了朋友..我问了另一个关于堆栈溢出的问题,如何搜索项目..你能说得更清楚你说的话..帮助将不胜感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多