首先可以设置背景色,默认透明,其次可以设置 top
怎么让view一直浮动在页面的最上层啊?写了一个登录状态框放在界面的最上面但是消息列表往上滑动的时候就重叠了,消息跑东岸登录状态栏上面去了,给了z-index属性也不行 [图片][图片]
2022-12-19是由于缺少了postcss,在你的项目里安装 postcss,yarn add postcss@7 -D
uniapp 项目安装 miniprogram-ci 后无法正常的打包使用 uniapp 初始化的项目可以正常通过 yarn run build:mp-weixin 完成打包操作 安装 miniprogram-ci 后,执行 yarn run build:mp-weixin 就无法正常完成打包了 问题复现过程如下: 参照 uniapp 官网创建(https://uniapp.dcloud.net.cn/quickstart-cli.html),通过 vue create -p dcloudio/uni-preset-vue my-project 命令初始化项目此时执行 yarn run build:mp-weixin 是正常的yarn add miniprogram-ci -D此时执行 yarn run build:mp-weixin 会报错:Cannot find module '@vue/babel-preset-app'执行 yarn add @vue/babel-preset-app -D此时执行 yarn run build:mp-weixin 继续报错:Cannot find module 'babel-loader'执行 yarn add babel-loader -D此时执行 yarn run build:mp-weixin 继续报错:in ./src/pages.json Syntax Error: TypeError: this.getOptions is not a function @ ./src/main.js?{"page":"pages%2Findex%2Findex"} 3:0-20问题:为什么使用 uniapp 初始化的项目可以正常通过 yarn run build:mp-weixin 完成打包操作,但是安装 miniprogram-ci 后就出问题,麻烦帮忙看一下~ ❀❀❀
2022-12-19大概率是代码报错,1. 有 api 请求没有配置合法域名 2. 真机的版本库不支持某些语法
自定义组件使用模拟器上显示,在真机上不显示?自己封装了一个时间选择组件,在模拟器上能够正常显示,功能正常。但是在真机上模拟时,不显示。会是什么原因造成的呢?[图片]真机时只有按钮以及头部背景,整个[图片]时间组件都不显示
2022-12-19建议先把表达梳理一下,再来问问题
创建js数组的指定对象,例如let Arr=[];content;{};添加数据到Arr?创建js数组的指定对象,例如let Arr=[];content;{};添加数据到Arr的content里面,求
2022-12-19用的Taro 就简单了,组件写在页面,点击其他组件 事件传到父组件就可以了
点击组件内部的按钮可以在页面中跳出弹窗吗?地址管理页面,引用了 地址列表组件。 现在需要点击组件中的按钮,在页面中跳出弹窗继续操作。需要实现的效果如图: [图片] 目前,把popup的相关代码放在组件中,可以实现其效果及功能,但弹窗出现在组件的框架范围内,而不是出现在页面中。(代码在下面) [图片][图片] 如果把popup代码写在页面中,点击组件时不会跳出弹窗,组件中的点击操作没有传到页面中,这里的操作可以怎么做吗?组件内的数据传到页面中可以怎么写代码呢? 列表组件代码(AddressItem): import React, { memo, useCallback, useEffect, useMemo, useState } from 'react'; import PropTypes from 'prop-types'; import { View, Text, Image, navigateTo, } from 'remax/wechat'; import request from '@/utils/request' import { clearSearchBase64Url } from '@/actions/common' import { connect } from 'react-redux'; import * as utils from '@/utils/common'; import useSysInfo from '../../hooks/sysInfo' import { Popup } from 'annar'; import styles from './index.css'; import classnames from 'classnames'; const AddressItem = memo(function (props) { const { delCb, } = props; const { id, user_id, phone, name, area, address, is_default } = props; const [isShowModal, setIsShowModal] = useState(false); const [ShowModal, setShowModal] = useState(false); const sysInfo = useSysInfo(); const defaults = parseInt(is_default) const getdelUserAddress = useCallback(() => { return request({ url: '/delUserAddress', method: 'post', data: { id: id }, success: function () { delCb(id) wx.showToast({ title: '删除成功', icon: 'success' }) } }) }) return ( <View className={styles.have}> <View className={styles.addchoose}> <Text>{name}</Text><Text>{phone}</Text> { (defaults) ? <View className={styles.default}>默认</View> : null } <View className={styles.details}>{area}{address}</View> <Image src='http://dxshy.duxieshe.com/uploads/applet_img/more.png' onTap={() => { setIsShowModal(true) }} /> </View> <Popup position="bottom" open={isShowModal} onClose={() => { setIsShowModal(false) }}> <View style={{ paddingBottom: sysInfo.safeBottomHeight + 'PX' }}> <View className={styles.background}> <View className={styles.operate} style={{ "color": "#000000" }} onTap={() => { navigateTo({ url: '/packagePagesE/address/editadr/index?userId=' + id }) setIsShowModal(false) }} >编辑</View> <View className={styles.smaline}></View> <View className={styles.operate} style={{ "color": "#FF0000" }} onTap={() => { setShowModal(true) setIsShowModal(false) }} >删除</View> <View className={styles.larline}></View> <View className={styles.operate} style={{ "color": "#000000" }} onTap={() => { setIsShowModal(false) }}>取消</View> </View> </View> </Popup> <Popup open={ShowModal} onClose={() => { setShowModal(false) }}> <View className={styles.Modal}> <View className={styles.wxts}>温馨提示</View> <Text>删除后数据不可恢复,</Text> <Text>确定要删除吗?</Text> <View className={styles.btn}> <View className={styles.left} onTap={() => { setShowModal(false) }}>取消</View> <View className={styles.right} onTap={() => { setShowModal(false) getdelUserAddress() }}>确认删除</View> </View> </View> </Popup> </View> ) }) AddressItem.propTypes = { id: PropTypes.string.isRequired, user_id: PropTypes.string.isRequired, phone: PropTypes.string.isRequired, name: PropTypes.string.isRequired, area: PropTypes.string.isRequired, address: PropTypes.string.isRequired, is_default: PropTypes.string.isRequired } AddressItem.defaultProps = { address: '' } const mapStateToProps = (state) => { const { userInfo } = state.common return { userInfo } } const mapDispatchToProps = (dispatch) => { return { clearSearchBase64Url: () => { dispatch(clearSearchBase64Url()) } } } export default connect(mapStateToProps, mapDispatchToProps)(AddressItem); 地址管理主页代码(address.js): import React, { useEffect, memo, useState, useCallback, useMemo } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import { View, Text, Image, ScrollView, setClipboardData, navigateTo, showLoading, hideLoading, } from 'remax/wechat'; import { connect } from 'react-redux'; import { Popup } from 'annar'; import Nav from '@/components/nav'; import Tabbar from '@/components/tabbar'; import request from '@/utils/request'; import useSysInfo from '../../../hooks/sysInfo' import useBackEvent from '@/hooks/navEvent' import AddressItem from '@/components/addressItem'; import styles from './index.css'; import { getSysConf } from '../../../actions/common'; import { setList, setCollectStatus } from '../../../actions/dynamic' const Address = function (props) { const { currentTab } = props; const [refreshTriggered, setRefreshTriggered] = useState(false); const [isLoading, setIsLoading] = useState(false); const { getSysConf, sysConf, userInfo } = props; const [isShowModal, setIsShowModal] = useState(false); const [ShowModal, setShowModal] = useState(false); const [hasData, setHasData] = useState(true); const [list, setList] = useState(); const [page, setPage] = useState(1); const sysInfo = useSysInfo(); useEffect(() => { getSysConf() }, []) const { homeAction, backAction } = useBackEvent(currentTab); // const Cancel = () => { // setShowModal(false) // wx.showToast({ // title: '删除成功', // icon: 'success' // }) // } const loadList = useCallback((passPage) => { return request({ url: '/getUserAddressList', method: 'get', data: { page: passPage ? passPage : page, limit: 10 } }) }, [page]) const init = useCallback(async () => { if (isLoading) return; const page = 1; setPage(page); setHasData(true); setIsLoading(true); const list = await loadList(page); setIsLoading(false); setPage(prevPage => prevPage + 1); setList(list); setRefreshTriggered(false) if (list.length < 10) { setHasData(false); } console.log('list', list); }, [isLoading, page]); const loadMore = useCallback(() => { if (isLoading) return; if (hasData) { setIsLoading(true) loadList().then(moreData => { setList(preList => preList.concat(moreData)) setPage(prev => prev + 1); setIsLoading(false) }) } /* else { wx.showToast({ title: '没有更多了~', icon: 'none' }) } */ }, [page, hasData, isLoading]) useEffect(() => { init(); }, []) useEffect(() => { if (isLoading) { showLoading({ title: '加载中', mask: true }) } else { hideLoading() } }, [isLoading]) return ( sysConf && <View className={styles.personal} style={{ height: sysInfo.safeArea.bottom + 'PX' }}> <Nav title="地址管理" goIndex={homeAction} onBack={backAction} showLeftFunc={true} /> <View className={styles.main}> <View className={styles.add} onTap={() => { navigateTo({ url: '/packagePagesE/address/addadr/index' }) }}> <Image src='http://dxshy.duxieshe.com/uploads/applet_img/add_green.png' /> <Text>添加收货地址</Text> </View> { (list && list.length > 0) ? <ScrollView className={styles.list} scrollY refresherEnabled refresherTriggered={refreshTriggered} lowerThreshold={60} bindscrolltolower={loadMore} bindrefresherrefresh={() => { setRefreshTriggered(true) init(); }}> <View className={styles.have}> <View className={styles.txt}>轻触以选择地址</View> { list.map((v, i) => { return ( <AddressItem key={i} {...v} /> ) }) } </View> </ScrollView> : Array.isArray(list) ? <View className={styles.none}> <Image src='http://dxshy.duxieshe.com/uploads/applet_img/none_02.png' /> <Text>暂无收货地址~</Text> </View> : null } </View> //弹窗 {/* <Popup position="bottom" open={isShowModal} onClose={() => { setIsShowModal(false) }} > <View style={{ paddingBottom: sysInfo.safeBottomHeight + 'PX' }}> <View className={styles.background}> <View className={styles.operate} style={{ "color": "#000000" }} onTap={() => { navigateTo({ url: '/packagePagesE/address/editadr/index' }) setIsShowModal(false) }} >编辑</View> <View className={styles.smaline}></View> <View className={styles.operate} style={{ "color": "#FF0000" }} onTap={() => { setShowModal(true) setIsShowModal(false) }} >删除</View> <View className={styles.larline}></View> <View className={styles.operate} style={{ "color": "#000000" }} onTap={() => { setIsShowModal(false) }}>取消</View> </View> </View> </Popup> <Popup open={ShowModal} onClose={() => { setShowModal(false) }}> <View className={styles.Modal}> <View className={styles.wxts}>温馨提示</View> <Text>删除后数据不可恢复,</Text> <Text>确定要删除吗?</Text> <View className={styles.btn}> <View className={styles.left} onTap={() => { setShowModal(false) }}>取消</View> <View className={styles.right} onTap={() => { Cancel() }}>确认删除</View> </View> </View> </Popup> */} </View > ) } const mapStateToProps = (state) => { const { sysConf, userInfo } = state.common; return { sysConf, userInfo } } const mapDispatchToProps = (dispatch) => { return { getSysConf: (conf) => { dispatch(getSysConf(conf)) } } } export default connect(mapStateToProps, mapDispatchToProps)(Address)
2022-11-09团队技术栈是vue就uniapp,原生一堆坑
开发微信小程序是选择原生开发还是用uni-app?正在学习小程序开发,发现好多教程都是用uni-app,我就想知道现在公司实际开发小程序是用原生开发还是用uni-app?
2022-08-18不能获取大部分的dom属性,就颜色、位置信息可以 innerHtml拿不到
小程序没办法像H5一样获取dom的Element对象吗?wx.createSelectorQuery只能拿到宽高等大小和位置信息。 元素对象、属性对象这些没办法获取吗?
2022-08-18这是个数组,参考楼上
WXML页面显示问题?[图片]这样类型的数据怎样能在页面上显示呢,用{{item.photo_src}}不出来图片
2022-08-12https://developers.weixin.qq.com/miniprogram/dev/framework/ability/domain.html 参考这里
微信小程序web-view 组件?微信小程序web-view 组件 不能打开同一主体的公众号的合集地址H5链接吗?显示让我配业务域名:https://mp.weixin.qq.com,我没有办法在https://mp.weixin.qq.com上面方法校验文件 [图片]
2022-08-12这用什么语言都行,每组选出2个,两组共4个数字,排列 4! = 4 x 3 x 2 x 1 = 24 种,就是算阶乘,至于阶乘使用递归还是迭代,就看自己编程了
如何输出所有的4位数字?今天参加考试,遇到一个题,请大家帮忙解答一下: 从1,2,3中选出两个数字,从4,5,6中选出两个数字,把选出的数字组成一个4位数字,能组成多少个不重复的4位数字?请把所有的4位数字输出出来。 请用一种您熟悉的语言编写代码。
2022-05-28