TextInput如何取消默认聚焦效果?

TextInput如何取消默认聚焦效果

阅读 625
avatarAI BotBETA

在React Native中,要取消TextInput的默认聚焦效果,你可以使用autoFocus属性并将其设置为false

以下是一个示例代码:

import React, { useState } from 'react';
import { TextInput, View, StyleSheet } from 'react-native';

const App = () => {
  const [text, setText] = useState('');

  return (
    <View style={styles.container}>
      <TextInput
        style={styles.input}
        placeholder="Enter text"
        onChangeText={text => setText(text)}
        value={text}
        autoFocus={false} // 将autoFocus属性设置为false,以取消默认聚焦效果
      />
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingHorizontal: 20,
  },
  input: {
    height: 40,
    borderColor: 'gray',
    borderWidth: 1,
    marginBottom: 20,
  },
});

export default App;

在上述代码中,我们创建了一个简单的React Native应用程序,其中包含一个TextInput组件。通过将autoFocus属性设置为false,我们取消了TextInput的默认聚焦效果。

1 个回答

页面中需要有承接焦点的组件,如果没有其他组件,组件中的TextInput就会聚焦;可以将焦点转移实现取消TextInput获取焦点的效果。

因为根据是否存在默认交互逻辑,可将组件分为可获焦和不可获焦组件,所以将焦点转移的时候有两种方案:

  • 方案一:存在默认交互逻辑的组件(默认可获焦):Button、TextInput等,只需通过将defaultFocus属性设置为true即可获取焦点。

示例代码

@Entry 
@Component  
struct Index { 
   controller: TextInputController = new TextInputController() 
  
   build() { 
     Row() { 
       TextInput({ 
         placeholder: 'wait input...', 
         text: '', 
         controller: this.controller 
       }) 
       Button('placeholder') 
         .defaultFocus(true) 
     } 
   } 
 }
  • 方案二:不存在默认交互逻辑的组件(默认不可获焦):Text、Image等,通过将focusable设置为true将此类组件转换为可获焦状态后再获取焦点。

示例代码

@Entry  
@Component 
struct Index { 
   controller: TextInputController = new TextInputController() 
   
   build() { 
     Row() { 
       TextInput({ 
         placeholder: 'wait input...', 
         text: '', 
         controller: this.controller 
       }) 
       Text('placeholder') 
         .focusable(true) 
         .defaultFocus(true) 
     } 
   } 
 }

参考链接

Search-caretPosition
焦点控制
焦点事件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进