单击徽章时如何使NativeBase FAB关闭onPress?

时间:2019-07-08 04:10:55

标签: react-native floating-action-button native-base

我当前使用的是NativeBase的FAB,除了单击设置为按钮的徽章时,无法使其关闭FAB之外,它没有任何问题。我正在使用其中一个徽章创建输入并打开键盘。这部分没有问题,但我无法关闭FAB,当我尝试时,它只隐藏了除最后一个徽章以外的所有徽章。

FAB open after button was pressed 这是我组件的简化版本

    const FabButton = (props) => {
    const [active, setActive] = useState(false)

    return (
        <Fab
            active={active}
            direction="up"
            containerStyle={{}}
            position="bottomRight"
            onPress={() => setActive(!active)}>

            <Icon name="arrow-up" />
            <Button onPress={props.replyToComment}>
                <Icon name="md-code-working" />
            </Button>

        </Fab>
    );
}

2 个答案:

答案 0 :(得分:0)

Native Base是一个繁重的UI库。您可以将此库https://github.com/mastermoo/react-native-action-button用于浮动操作按钮,或者必须自定义本机基础FAB组件。

这里是示例:

 import React, {


Component
} from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';
import Icon from 'react-native-vector-icons/Ionicons';
import ActionButton from 'react-native-action-button';

class Basic extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Basic Example
        </Text>
        <ActionButton buttonColor="rgba(231,76,60,1)">
          <ActionButton.Item buttonColor='#9b59b6' title="New Task" onPress={() => console.log("notes tapped!")}>
            <Icon name="me-create" style={styles.actionButtonIcon} />
          </ActionButton.Item>
          <ActionButton.Item buttonColor='#3498db' title="Notifications" onPress={() => {}}>
            <Icon name="me-notifications-off" style={styles.actionButtonIcon} />
          </ActionButton.Item>
          <ActionButton.Item buttonColor='#1abc9c' title="All Tasks" onPress={() => {}}>
            <Icon name="md-done-all" style={styles.actionButtonIcon} />
          </ActionButton.Item>
        </ActionButton>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF'
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10
  },
  actionButtonIcon: {
    fontSize: 20,
    height: 22,
    color: 'white',
  }
});

AppRegistry.registerComponent('Basic', () => Basic);

答案 1 :(得分:0)

您可能想得太多。您需要做的就是单击按钮时更改活动状态:)

const FabButton = (props) => {
const [active, setActive] = useState(false)

return (
    <Fab
        active={active}
        direction="up"
        containerStyle={{}}
        position="bottomRight"
        onPress={() => setActive(!active)}>

        <Button onPress={() => {
          props.replyToComment
          setActive(false)            // <= add this
        }}>
          <Icon name="md-code-working" />
        </Button>

    </Fab>
  );
}