我正在try 使用flex将我的搜索组件(水平和垂直)居中.它在Web视图上工作得很好,但在Native视图上不是垂直居中.我正在使用EXPO,它有几种可用方法来查看这款应用程序:

Screenshot of expo app output

这是App.tsx

import React from 'react';
import { View } from 'react-native';
import Search from './components/Search';

const styles: any = {
  container:{
    flex: 1,
    margin: 20,
    alignItems: 'center',
    justifyContent: 'center'
  }
}
const App = () => {

  return (
    <View style={styles.container} >
      <Search/>
    </View>
  );
};

export default App;

这里是Search.tsx

import React, { useState, useEffect } from 'react';
import { View, TextInput, FlatList, Text } from 'react-native';

const Search = () => {
  const [searchTerm, setSearchTerm] = useState('');
  const [results, setResults] = useState([]);

  useEffect(() => {
    let timerId: any = null;
    if (searchTerm.length >= 2) {
      clearTimeout(timerId);
      timerId = setTimeout(() => {
        fetch(`http://localhost:8080/search/${searchTerm}`)
          .then((response) => response.json())
          .then((data) => setResults(data.results))
          .catch((error) => console.error(error));
      }, 500);
    } else {
      setResults([]);
    }

    return () => clearTimeout(timerId);
  }, [searchTerm]);

  return (
    <View>
      <TextInput
        value={searchTerm}
        onChangeText={(text) => setSearchTerm(text)}
        placeholder="Search"
      />
      <FlatList
        data={results}
        keyExtractor={(item) => item}
        renderItem={({ item }) => (
          <Text>{item}</Text>
        )}
      />
    </View>
  );
};


export default Search;

推荐答案

我通过将Search.tsx中的父视图的宽度设置为100%,然后在App.tsx中的容器View中添加一个额外的View组件来实现这一点.

Search.tsx更改

    <View style={{ width: '100%' }}>
    <TextInput
      value={searchTerm}
      onChangeText={(text) => setSearchTerm(text)}
      placeholder="Search"
    />
    <FlatList
      data={results}
      keyExtractor={(item) => item}
      renderItem={({ item }) => (
        <Text>{item}</Text>
      )}
    />
  </View>

App.tsx更改

  <View style={styles.container}>
    <View >
      <Search />
    </View>
  </View>

向ChatGPT喊话寻求解决方案(经过多次try )

Javascript相关问答推荐

以逗号分隔的列表来数组并填充收件箱列表

如何制作删除按钮以从列表中删除该项目所属的项目?

Angular:ng-contract未显示

React Native平面列表自动滚动

使用TMS Web Core中的HTML模板中的参数调用过程

JQuery. show()工作,但. hide()不工作

如何在Javascript中的控制台上以一行形式打印循环的结果

TypeScript索引签名模板限制

在react js中使用react—router—dom中的Link组件,分配的右侧不能被 destruct ''

我怎么才能得到Kotlin的密文?

使用Promise.All并发解决时,每个promise 的线性时间增加?

使用js构造一个html<;ath&>元素并不能使其正确呈现

如何在不影响隐式类型的情况下将类型分配给对象?

DOM不自动更新,尽管运行倒计时TS,JS

OpenAI转录API错误请求

如果NetSuite中为空,则限制筛选

递增/递减按钮React.js/Redux

我如何才能获得价值观察家&对象&S的价值?

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?

如果查询为空,则MongoDB将所有文档与$in匹配