我在使用dexie的react的useLiveQuery钩子时遇到以下错误。不明白,下面三种情况都不适用。
错误:
错误代码:58032无效的挂接调用。挂接只能在函数组件的〉body内部调用。这可能是由于以下原因之一:
- React和渲染器的版本可能不匹配(例如React DOM)
1.你可能违反了钩子的规则
1.您可能在同一个应用程序中有多个React副本
组件(Editor.js):
import React, { useState} from "react";
import Title from './Title'
import Blocks from './Blocks'
import styled from 'styled-components'
import { useLiveQuery } from "dexie-react-hooks";
import db from '../db'
const Editor = () => {
const [title, setTitle] = useState('');
console.log("Editor: start - title state: " + title);
const tag = useLiveQuery(
() =>
title
? db.tags.where('name').equals(title)
: db.tags.toCollection().first(),
[title]
);
if(!tag) {
console.log("tag not loaded yet, returning null");
return null;
}
const onTitleChange = (event) => {
db.tags.where({ name: title }).modify((item) => item.name=event.target.value)
}
const EditorStyle = styled.section`
padding: 10px;
min-width: 400px;
`;
console.log("Rendering with title:" + title + " and tag.name: " + tag.name);
return (
<EditorStyle>
<Title
onTitleChange={onTitleChange}
title={tag?.name}
/>
<Blocks
tag={tag?.name}
/>
</EditorStyle>
)
}
export default Editor;
数据库(db.js)
数据库.版本(1).存储({标签:&name, *tags
,数据块:x 1 m 1 n 1x})的数据;
数据库预填充了一个值
数据库.标签.添加({名称:“第一页”});
使用react 17.0.1。
我做错了什么?
谢谢你!
1条答案
按热度按时间xbp102n01#
你现在需要dexie@〉3.1.0-alpha.5才能使用dexieReact钩。