Javascript Firestore文档添加在回调中不起作用

Javascript Firestore文档添加在回调中不起作用,javascript,reactjs,firebase,redux,google-cloud-firestore,Javascript,Reactjs,Firebase,Redux,Google Cloud Firestore,我正在进行一个项目,在这个项目中,我必须将一个新文档上载到firestore,这似乎很简单,但是每当我尝试使用.doc.set()或.add()上载任何文档时,请求似乎都不会传递到firebase,并且我的firestore数据库中根本没有显示任何内容。然而,每当我尝试在回调之外上传一些东西时,无论是使用useffect进行页面加载,还是存储在任何类型的匿名函数之外的onClick中,都可以正常运行。我正在使用react-redux-firebase,react-redux,以及redux-fi

我正在进行一个项目,在这个项目中,我必须将一个新文档上载到firestore,这似乎很简单,但是每当我尝试使用
.doc.set()
.add()
上载任何文档时,请求似乎都不会传递到firebase,并且我的firestore数据库中根本没有显示任何内容。然而,每当我尝试在回调之外上传一些东西时,无论是使用
useffect
进行页面加载,还是存储在任何类型的匿名函数之外的
onClick
中,都可以正常运行。我正在使用
react-redux-firebase
react-redux
,以及
redux-firestore
。我还没有弄清楚我做错了什么,所以如果你能指出这一点,那就太棒了

这是保存表单以输入我要上载的信息的组件:

    const New = ({ createPost }) => {
    const [form, setForm] = useState({
        title: '',
        content: ''
    });

    const handleInput = (field, e, data) => {
        switch (field) {
            case 'title':
                setForm({ ...form, title: e.target.value });
                break;
            case 'content':
                setForm({ ...form, content: data });
                break;
            default:
                return null;
        }
    }

    return (
        <main className='new'>
            <h1>New Post</h1>
            <form id='new-post-form' onSubmit={() => createPost(form)}>

                <fieldset className='new-post-field'>
                    <label htmlFor='title'>Title</label>
                    <input onChange={e => handleInput('title', e)} type='text' name='title' id='new-post-title' placeholder='Title'/>
                </fieldset>

                <fieldset className='new-post-field'>
                    <label htmlFor='content'>Post Content</label>
                    <CKEditor 
                    editor={ ClassicEditor } 
                    onChange={ (e, editor) => {
                        const data = editor.getData();
                        handleInput('content', e, data)
                    }}
                    />
                </fieldset>

                <fieldset className='new-post-field'>
                    <input className='new-form-button' type='submit'/>
                </fieldset>

            </form>
        </main>
    )
}

const mapDispatchToProps = dispatch => ({
    createPost: post => dispatch(createPost(post))
});

export default connect(null, mapDispatchToProps)(New)

错误是什么?没有更多信息。看起来您使用了错误的api方法。getFirestore()返回一个redux firestore实例,您使用它就像使用正式的JS客户端一样。再次查看redux firestore文档
export const createPost = post => (
    (dispatch, getState, { getFirebase, getFirestore }) => {
        const firestore =  getFirestore();
        const slug = post.title.toString().toLowerCase()
            .replace(/\s+/g, '-')
            .replace(/[^\w-]+/g, '')
            .replace(/--+/g, '-')
            .replace(/^-+/, '')
            .replace(/-+$/, '')
            .substring(0, 75);
        firestore.collection('posts').doc(slug).set({
            ...post,
            slug,
            timeCreated: firestore.FieldValue.serverTimestamp()
        }).then(() => {
            dispatch({ type: 'CREATE_POST', post });
        }).catch(err => {
            dispatch({ type: 'CREATE_POST_ERROR', err })
        });
    }
);