微信小程序开发记录

要在开发者工具里的app.json里新编辑pages列表,才能自动创建文件夹和对应四个文件。

要想支持typescript和scss,只要在project.config.json里添加

1
2
3
4
"useCompilerPlugins": [
"sass",
"typescript"
],

就可以了

解决typescript开头 Page 报错:

先输入一个yarn,将整个项目yarn化,然后

1
yarn add --dev @types/wechat-miniprogram

解决写wxml非常不舒服的问题:

vscode插件:小程序开发助手

每个页面应该具体的格式应该如何处理?

在app.wxss里写这个

1
2
3
4
page {
background-color: pink;
padding-top: env(safe-area-inset-top);
}

为什么文字总是溢出不换行?

1
2
3
word-wrap: break-word;
word-break: break-all;
white-space: pre-line;

添加这三个css就可以了

为什么有时候总是app.json 去查找index.js 而不是 index.ts了?

临时的解决办法:

1
2
3
4
"useCompilerPlugins": [
"sass",
"typescript"
],

把这个typescript删了再加上。就会更新一下。

如何写出一个能上下滑动的界面?scroll-view

为什么编译总是遇到

1
[ app.json 文件内容错误] app.json: 未找到 ["pages"][0] 对应的 pages/index/index.js 文件(env: Windows,mp,1.06.2402040; lib: 3.4.2)

还是ts识别不好的原因。

每次写代码都很卡,看效果都要等上好几秒

编译速度太慢怎么办? | 微信开放社区 (qq.com) 可以试试关了

关于循环渲染多个audio选择框,主要是通过 data-xxx 在节点上绑定东西用的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<view class="page">
<scroll-view scroll-y="true" type="list" class="income-info">
<view class="table">
<view class="row header">
<view class="cell">名称</view>
<view class="cell">金额</view>
<view class="cell">频率</view>
<view class="cell">操作</view>
</view>
<view class="row" wx:for="{{incomes}}" wx:for-item="item" wx:key="index">
<view class="cell">[{{index+1}}]{{item.name}}</view>
<view class="cell">{{item.amount}}</view>
<view class="cell">
<radio-group bindchange="changeFrequency" data-group-id="{{index}}">
<label wx:for="{{selectFrequency}}" wx:for-item="freq" wx:key="*this">
<radio value="{{freq}}" checked="{{freq === item.frequency}}" data-index="{{index}}" data-id="{{item.id}}" />
<text selectable="false">{{freq}}</text>
</label>
</radio-group>
</view>
<view class="cell">
<button class="btn-delete" data-id="{{item.id}}">删除</button>
</view>
</view>
</view>
</scroll-view>
<view class="bottom-area">
<button class="btn-add" bindtap="addIncome">添加行</button>
</view>
</view>

ts:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// index.js
Page({
data: {
incomes: [
{
name: "工资",
amount: 10000,
frequency: "每月",
},
{
name: "奖金",
amount: 5000,
frequency: "每月",
},
],
selectFrequency: ["每天", "每周", "每月", "每年"],
},

changeFrequency(event) {
console.log(event.target.dataset.groupId); // 0, 1, 2, 3
console.log(event.detail.value); // "每天", "每周", "每月", "每年"
const { incomes } = this.data;
incomes[event.target.dataset.groupId].frequency = event.detail.value;
this.setData({
incomes,
});

wx.setStorage({
key: "incomes",
data: incomes,
});
},

addIncome() {
console.log("add income");
const { incomes, selectFrequency } = this.data;
const newIncome = {
name: "新收入",
amount: 0,
frequency: selectFrequency[0],
};
incomes.push(newIncome);
this.setData({
incomes,
});

wx.setStorage({
key: "incomes",
data: incomes,
});
},
onLoad: function () {
wx.getStorage({
key: "incomes",
success: (res) => {
console.log(res.data);
this.setData({
incomes: res.data,
});
},
fail: (res) => {
wx.setStorage({
key: "incomes",
data: [],
});
},
});
},
});