uni-app 使用uni.setNavigationBarTitle后端接口返回标题文字渲染不生效

uni-app 使用uni.setNavigationBarTitle后端接口返回标题文字渲染不生效

示例代码:

onLoad() {  
    this.postActivitys()  
},  
onReady() {  

    setTimeout(() => {  
        uni.setNavigationBarTitle({  
            title: this.title,  
        })  
        console.log('this.title: ', this.title);  
    }, 5000)  
},  
methods: {  
    async postActivitys() {  
        const {  
            data  
        } = await postActivity({  
            id: id || 41239  
        })  
        this.title = data.data.article.title  
        this.content = data.data.article.content  
        this.click = data.data.article.click  
        this.public_at = data.data.article.public_at  
        this.publicationAddress = data.data.article.extend.publicationAddress  
        this.imgList = data.data.article.extend.images;  

    }  
},

操作步骤:

onLoad() {  
    this.postActivitys()  
},  
onReady() {  

    setTimeout(() => {  
        uni.setNavigationBarTitle({  
            title: this.title,  
        })  
        console.log('this.title: ', this.title);  
    }, 5000)  
},  
methods: {  
    async postActivitys() {  
        const {  
            data  
        } = await postActivity({  
            id: id || 41239  
        })  
        this.title = data.data.article.title  
        this.content = data.data.article.content  
        this.click = data.data.article.click  
        this.public_at = data.data.article.public_at  
        this.publicationAddress = data.data.article.extend.publicationAddress  
        this.imgList = data.data.article.extend.images;  

    }  
},

预期结果:

  • 可以修改

实际结果:

  • 不能 修改 写死字符串可以 后端返回字符串 然后渲染 不可以

bug描述:

请求接口 接口返回标题需要渲染的文字 在所有生命周期都试过了 然后还是过了写死文字都可以 就是动态渲染不行 写定时器从200毫秒到五秒全试过了 然后写死一个字符串就可以

2 回复

设置的时候 发现在浏览器上 可以修改 但是运行到APP内就不行 项目属于内嵌的H5页面


在使用 uni.setNavigationBarTitle 设置导航栏标题时,如果后端接口返回的标题文字渲染不生效,可能是由于以下几个原因导致的。你可以按照以下步骤进行排查和解决:

1. 确保接口请求成功

首先,确保你的接口请求是成功的,并且返回的数据是正确的。你可以在请求成功后打印返回的数据,确认标题文字是否正确。

uni.request({
    url: 'https://example.com/api/getTitle',
    success: (res) => {
        console.log(res.data); // 打印返回的数据
        const title = res.data.title;
        uni.setNavigationBarTitle({
            title: title
        });
    },
    fail: (err) => {
        console.error('请求失败', err);
    }
});

2. 确保 uni.setNavigationBarTitle 调用时机正确

uni.setNavigationBarTitle 必须在页面生命周期中调用,确保在页面加载完成后再设置标题。你可以在 onLoadonShow 生命周期钩子中调用。

export default {
    onLoad() {
        uni.request({
            url: 'https://example.com/api/getTitle',
            success: (res) => {
                const title = res.data.title;
                uni.setNavigationBarTitle({
                    title: title
                });
            }
        });
    }
}

3. 确保标题文字不为空

如果后端返回的标题文字为空或未定义,uni.setNavigationBarTitle 可能不会生效。你可以在设置标题前进行判断。

uni.request({
    url: 'https://example.com/api/getTitle',
    success: (res) => {
        const title = res.data.title;
        if (title) {
            uni.setNavigationBarTitle({
                title: title
            });
        } else {
            console.warn('标题为空');
        }
    }
});

4. 检查页面栈

如果你在页面跳转后设置标题,确保你是在当前页面设置的。如果页面已经跳转,uni.setNavigationBarTitle 可能不会生效。

5. 检查 uni-app 版本

确保你使用的 uni-app 版本是最新的,或者至少是支持 uni.setNavigationBarTitle 的版本。旧版本可能存在兼容性问题。

6. 检查平台差异

不同平台(如微信小程序、H5、App)对 uni.setNavigationBarTitle 的支持可能有所不同。确保你在目标平台上测试。

7. 使用 uni.setNavigationBarTitle 的 Promise 形式

如果你使用的是 uni-app 的 Promise 形式,确保正确处理了 Promise 的返回。

uni.request({
    url: 'https://example.com/api/getTitle',
    success: async (res) => {
        const title = res.data.title;
        try {
            await uni.setNavigationBarTitle({
                title: title
            });
            console.log('标题设置成功');
        } catch (err) {
            console.error('标题设置失败', err);
        }
    }
});

8. 检查页面配置

如果你在 pages.json 中配置了页面的导航栏标题,确保它不会覆盖你通过 uni.setNavigationBarTitle 设置的标题。

{
    "pages": [
        {
            "path": "pages/index/index",
            "style": {
                "navigationBarTitleText": "默认标题"
            }
        }
    ]
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!