【问题标题】:React Navigation change custom header title on componentDidMountReact Navigation 更改 componentDidMount 上的自定义标题标题
【发布时间】:2019-03-16 00:12:00
【问题描述】:

我正在开发一个具有 tabNavigator 的应用程序,并且每个选项卡都有一个带有自定义标题的 stackNavigator。我需要能够从其中一个屏幕将参数传递给 stackNavigator 以更改标题标题。

MyScreen.js:

class MyScreen extends Component {
    state = {
        title: "My Title"
    }

    static navigationOptions = ({ navigation }) => {
        const appToolbarTitle = navigation.state.params && navigation.state.params.title
                ? navigation.state.params.title
                : "";
        console.log("NAV_PARAM: " + appToolbarTitle);
        return {
            header: props => {
                <AppToolbar title={appToolbarTitle} />;
            }
        };
    };

    setScreenTitle = title => {
        const { setParams } = this.props.navigation;
        setParams({ title: title });
    };

    componentDidMount() {
        if (this.state.title != null && this.state.title != undefined) {
            this.setScreenTitle(this.state.title);
        }
    }

    ....

}

AppToolbar.js:

const appToolbar = props => {
    return (
        <View style={styles.toolbar}>
            <Text style={styles.toolbarTitle}>{props.title}</Text>
            <TouchableOpacity onPress={...}>
                <Icon
                    name="ios-contact"
                    color="grey"
                    size={30}
                    style={{ padding: 0, margin: 0, marginRight: 10 }}
                />
            </TouchableOpacity>
        </View>
    );
};

出于某种原因,console.log 语句正确打印了在 componentDidMount 中传递的参数,但它似乎没有通过组件,关于我做错了什么有什么想法吗?

【问题讨论】:

    标签: react-native react-navigation react-navigation-stack


    【解决方案1】:

    我认为你在这里错过了回报

    header: props => {
                   return  (<AppToolbar title={appToolbarTitle} />);
                }
    

    或者只是

    header: props => <AppToolbar title={appToolbarTitle} />

    【讨论】:

    • 试过了,什么都没有......就像它甚至没有使用 AppToolbar 组件 =/
    • 您尝试过简单的&lt;Text&gt; 标头吗?
    • 刚刚测试了它,它没有做任何事情......它只是忽略它=/
    • 这意味着问题不是来自绑定数据。也许自定义标题不起作用
    猜你喜欢
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多