IndexedDB React和德谢:功能组件中出现“无效挂钩调用”错误

umuewwlo  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(1)|浏览(198)

我在使用dexie的react的useLiveQuery钩子时遇到以下错误。不明白,下面三种情况都不适用。
错误:
错误代码:58032无效的挂接调用。挂接只能在函数组件的〉body内部调用。这可能是由于以下原因之一:

  1. 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。
我做错了什么?
谢谢你!

xbp102n0

xbp102n01#

你现在需要dexie@〉3.1.0-alpha.5才能使用dexieReact钩。

相关问题