taro开发小程序使用自定义返回的时候 onClick={() => { Taro.redirectTo({ url: '/subPackages3/pages/buy/commodity/index', }) }},返回到上个页面,为什么上个页面要返回两次才返回到上一个页面
时间: 2024-03-03 14:53:57 浏览: 59
这可能是因为你在使用 Taro.redirectTo 方法进行页面跳转时,它会关闭当前页面并打开新页面,从而导致上一个页面被隐藏。所以当你想要返回上一个页面时,需要先返回到上一个页面的上一个页面,然后再返回到上一个页面。
如果你想要直接返回上一个页面而不需要返回两次,可以尝试使用 Taro.navigateBack 方法进行页面返回。这个方法可以直接返回到上一个页面,而不需要先返回到上一个页面的上一个页面。例如:
```
onClick={() => {
Taro.navigateBack();
}}
```
希望能够帮助你解决问题。
相关问题
import React, { useState, useCallback } from "react"; import Taro from "@tarojs/taro"; import { View } from "@tarojs/components"; import { LgPopLayer, LgButton } from "lancoo-ui-mobile"; import "../index.scss"; export const Jsx = () => { const [isOpen, setIsOpen] = useState(false); const handleLayer = useCallback(() => { setIsOpen(!isOpen); }, [isOpen]); const confirm = useCallback(() => { Taro.showToast({ title: "点击确定", icon: "none" }); handleLayer(); }, [handleLayer]); return ( <View className="iframe__viewport"> <View className="viewport__title">向下弹出</View> <View className="viewport__main"> <LgButton onClick={handleLayer}>显示上方弹出层</LgButton> <LgPopLayer position="top" isOpen={isOpen} confirm={confirm} showLayer={handleLayer} > <View className="lg-poplayer__content">自定义内容</View> </LgPopLayer> </View> </View> ); }; 改成类组件写法
import React, { Component } from "react";
import Taro from "@tarojs/taro";
import { View } from "@tarojs/components";
import { LgPopLayer, LgButton } from "lancoo-ui-mobile";
import "../index.scss";
class Jsx extends Component {
constructor(props) {
super(props);
this.state = {
isOpen: false
};
}
handleLayer = () => {
this.setState((prevState) => ({
isOpen: !prevState.isOpen
}));
};
confirm = () => {
Taro.showToast({ title: "点击确定", icon: "none" });
this.handleLayer();
};
render() {
const { isOpen } = this.state;
return (
<View className="iframe__viewport">
<View className="viewport__title">向下弹出</View>
<View className="viewport__main">
<LgButton onClick={this.handleLayer}>显示上方弹出层</LgButton>
<LgPopLayer
position="top"
isOpen={isOpen}
confirm={this.confirm}
showLayer={this.handleLayer}
>
<View className="lg-poplayer__content">自定义内容</View>
</LgPopLayer>
</View>
</View>
);
}
}
export default Jsx;
下面这段代码,在微信小程序中存在哪些问题,请分析指出,并把修复后的代码发给我。addPic: function () { const _ = this; const { quality } = this.state Taro.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album'], success(result) { const tempFilePath = result.tempFilePaths[0]; let size = result.tempFiles[0].size; if (size > 1024 * 1024 * 8) {//大于8M返回 return Taro.showToast({ title: '图片大于8M啦', icon: 'none' }) } if (size < 1024 * 800) { //小于800kb压缩 const status = await _.imgSecCheck(tempFilePath) if (status == true) { console.log('通过了处理'); //走检测通过处理 } } else { Taro.getImageInfo({ src: tempFilePath, success: function (res) { _.setState({//设置原始宽高 cWidth: res.width, cHeight: res.height }, async () => { try { const imagePath = await _.getCanvasImg(tempFilePath, res.width, res.height, quality); const status = await _.imgSecCheck(imagePath) if (status == true) { console.log('通过了处理'); //走检测通过处理 } } catch (error) { } }) } }) } } }) },
在微信小程序中,下面这段代码存在以下问题:
1. `const status = await _.imgSecCheck(tempFilePath)` 语句中没有使用 `async` 函数,无法使用 `await` 关键字,应该将该函数改为 `async` 函数。
2. `await` 关键字只能在 `async` 函数中使用,因此需要将 `success` 回调函数改为 `async` 函数。
3. `success` 回调函数中的 `_.setState` 函数在微信小程序中应该使用 `this.setData` 函数进行替换。
4. `Taro.getImageInfo` 函数在微信小程序中应该使用 `wx.getImageInfo` 函数进行替换。
下面是修复后的代码:
```
addPic: function () {
const _ = this;
const { quality } = this.state
Taro.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album'],
success: async function(result) {
const tempFilePath = result.tempFilePaths[0];
let size = result.tempFiles[0].size;
if (size > 1024 * 1024 * 8) {
//大于8M返回
return Taro.showToast({
title: '图片大于8M啦',
icon: 'none'
})
}
if (size < 1024 * 800) {
//小于800kb压缩
const status = await _.imgSecCheck(tempFilePath)
if (status == true) {
console.log('通过了处理');
//走检测通过处理
}
} else {
wx.getImageInfo({
src: tempFilePath,
success: async function(res) {
_.setData({
//设置原始宽高
cWidth: res.width,
cHeight: res.height
})
try {
const imagePath = await _.getCanvasImg(tempFilePath, res.width, res.height, quality);
const status = await _.imgSecCheck(imagePath)
if (status == true) {
console.log('通过了处理');
//走检测通过处理
}
} catch (error) {
}
}
})
}
}
})
},
```
阅读全文