我的项目采用的是electron+vue3 开发的客户端
首先,我在main.js 里面添加sqlite 数据库配置,并通过provide 将数据暴露给各大组件使用
import sqlite from 'sqlite3'
let databasePath = 'C:\\Users\\ywj\\Desktop\\note\\note.db'
let database = new sqlite.Database(databasePath)
app.provide('$db', database)
然后,在我的组件里面,我定义了一个hooks,目的是将一些功能进行抽离成公共方法
import {ref, inject} from 'vue'
export default function () {
async function getConfig (configId) {
const database = inject('$db')
let config = await database.selectOneSync("select * from t_system_config where deleted='0' and configId=?", configId)
return config?.configValue
}
function setConfig (configId, configValue) {
const database = inject('$db')
console.log('1223',database.insertSync)
database.insertSync("insert into t_system_config(configId,configValue) values(?,?)", configId, configValue)
}
return {getConfig, setConfig}
}
然后我开始在我的组件里面使用这个hooks,发现watch 执行的时候报错了,
<script setup>
import {ref, watch, inject, onMounted} from 'vue'
watch(storePath,(newVal)=>{
setConfig('STORE_PATH', newVal) //这里调用不行,当执行到 inject('$db') 是空的
})
onMounted(async () => {
setConfig('STORE_PATH','1112') //这里调用可以,能正常获取到inject
})
</<script>