задний план
Я много занимался разработкой апплетов WeChat... Я всегда сталкиваюсь с некоторыми официальными компонентами илиapi
Связанные или неразрешимые потребности, поэтому я решил разобраться со своей собственной реализацией здесь (в произвольном порядке)
Настроить использование компонентов
-
Создайте 右键新建
Component
-
Цитировать в файле, на который нужно ссылаться
json
определено в
"注释": "前面为组件名,后面为路径,这里仅供参考"
{
"usingComponents": {
"Menu": "../Components/Menu/Menu",
"Loading": "../Components/Loading/Loading"
}
}
- входящие свойства
в компонентеjs
Определите имя свойства, тип и значение по умолчанию, которое вам нужно в
properties: {
theme: {
type: String,
value: 'gray'
}
...
},
Уведомление
properties
Для данных, которые должны быть переданы родительским компонентом, состояние самого компонента все еще находится в состоянииdata
середина
затем вwxml
можно процитировать в
<Menu theme="{{theme}}"></Menu>
Скин в один клик
сначала создайтеcolor.wxss
для хранения ваших стилей скинов (необязательное имя файла и местоположение)
/* 黑色主题 */
.bg-black{
background-color: #363636;
}
.col-black-title{
color: #ffffff;
}
.col-black-name{
color: #c3c3c3;
}
class
должен иметь один в имени标志
Чтобы различать разные темы, рекомендуется использовать английское название цвета. Тогда вapp.wxss
цитируется в
// ~ 为你的文件路径
@import '~/color.wxss';
позжеapp.js
изglobalData
Определите поле для хранения вашей текущей темы в
globalData: {
themeArr: ['gray', 'black', 'green', 'orange', 'pink', 'blue'],
theme: 'black' // gray, black, green, orange, pink, blue
}
Затем ссылайтесь на него в jsapp.js
, затем вonLoad
получатьtheme
назадsetData
Вот и вставьте код сюда
<Menu theme="{{theme}}"></Menu>
<block wx:for="{{themeArr}}" wx:key="{{index}}">
<view
class="theme-view-item bg-{{item}} select-{{item == theme}}"
bindtap='changeTheme'
data-theme="{{item}}"
></view>
</block>
.theme-view-item{
width: 80rpx;
height: 40rpx;
margin: 20rpx;
border-radius: 10rpx;
}
.select-true{
transform: scale(1.2,1.2);
}
var app = getApp()
Page({
data: {
theme: '',
themeArr: app.globalData.themeArr
},
onLoad: function (options) {
this.setData({
theme: app.globalData.theme
})
},
changeTheme(e){
var theme = e.currentTarget.dataset.theme
app.globalData.theme = theme
this.setData({
theme: theme
})
}
})
прийти к рендерингу
Здесь вы также можете использовать
storage
сохранитьtheme
Загрузи больше
использоватьscroll-view
<scroll-view
scroll-y
bindscrolltolower='toLow'
style="height: {{height}}px"
>
scroll-y
разрешить вертикальную прокрутку,bindscrolltolower
определяет функцию, которая должна выполняться при прокрутке вниз,style
используется вjs
Доступная высота экрана, полученная из
использовать
scroll-y
необходимо указатьscroll
высота
onLoad: function (options) {
wx.getSystemInfo({
success: (res) => {
this.setData({
height: res.windowHeight
})
}
})
},
toLow(){
this.setData({
isLoading: true
})
},
затем вscroll
поставь свой нижеloading
Компоненты в порядке..
<scroll-view
scroll-y
bindscrolltolower='toLow'
style="height: {{height}}px"
>
......
<view hidden="{{!isLoading}}">
<Loading></Loading>
</view>
</scroll-view>
Потяните вниз, чтобы обновить
Эта функция используется официальнымapi
, первый вapp.json
Определено в разрешении потянуть вниз, чтобы обновить
"window": {
......
"enablePullDownRefresh": true
}
тогда в вашемjs
Определите соответствующую функцию в файле
onPullDownRefresh: function () {
......
wx.stopPullDownRefresh()
},
Вы можете видеть этоофициальная документация
адаптивный
rpx
Устройство находится в апплете WeChatcss
единица измерения,rpx
Его можно адаптировать в соответствии с шириной экрана, например, вiPhone6
, ширина экрана375px
, в целом750
физические пиксели, затем750rpx
= 375px
= 750
физические пиксели,1rpx
= 0.5px
= 1
физический пиксель
Если вы не понимаете, не думайте об этом слишком много.
px
удвоить его размер при использованииrpx
Только что
[Апплет WeChat] —— Анализ взаимосвязи между rpx, px, rem и другими размерами
предотвращение всплытия событий
Предположим, что имеется следующая структура
<view class='A' bindtap='funcA'>
<view class='B' bindtap='funcB'></view>
</view>
мы вA
,B
Два независимых события щелчка определены выше, и детская обувь, которая понимает всплывающие события, обнаружит, что если они щелкнутB
не только выполняетfuncB
также будет выполнятьfuncA
, так как избежать этой проблемы?
Это очень просто, просто измените функцию привязки, которая не требует всплытия, наcatchtap
<view class='A' bindtap='funcA'>
<view class='B' catchtap='funcB'></view>
</view>
Как удалить границу кнопки по умолчанию
Апплет WeChatbutton
Граница на самом деле написана вafter
, можно найти вafter
внести изменения в
button::after{
border: none;
}
или изменитьbutton
изposition
пусть это неrelative
button{
position: static;
}
Процесс входа в мини-программу и доступа
картинка