针对reactjs–在React中使用Firebase承诺的setState和react.then这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展FirebaseFirestoreonSna
针对reactjs – 在React中使用Firebase承诺的setState和react .then这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Firebase Firestore onSnapshot无法在ReactJs应用程序上接收更改和渲染、javascript – 如何在ReactJS中使用setState()方法?、reactjs – firebase2.default.firestore不是函数 – React Firebase、reactjs – Jest失败在React 16升级后无法从’ReactShallowRenderer.js’找到模块’react / lib / React’等相关知识,希望可以帮助到你。
本文目录一览:- reactjs – 在React中使用Firebase承诺的setState(react .then)
- Firebase Firestore onSnapshot无法在ReactJs应用程序上接收更改和渲染
- javascript – 如何在ReactJS中使用setState()方法?
- reactjs – firebase2.default.firestore不是函数 – React Firebase
- reactjs – Jest失败在React 16升级后无法从’ReactShallowRenderer.js’找到模块’react / lib / React’
reactjs – 在React中使用Firebase承诺的setState(react .then)
如何在反应组件内设置状态?
我收到了错误消息:
Uncaught TypeError: Cannot read property ‘setState’ of null
这是组件代码清单:
class MessageList extends React.Component { constructor(props){ super(props); this.state = { messages: [] }; var firebaseRef = firebase.database().ref(); firebaseRef.once('value') .then(function(dataSnapshot) { this.setState({ messages: messages }); }); } render() { ... } }
var firebaseRef = firebase.database().ref(); firebaseRef.once('value') .then((dataSnapshot) => { this.setState({ messages: messages }); });
或者在承诺之前创建一个这样的副本
constructor(props){ super(props); this.state = { messages: [] }; var that = this; var firebaseRef = firebase.database().ref(); firebaseRef.once('value') .then(function(dataSnapshot) { that.setState({ messages: messages }); });
最后一个选项,您可以将此绑定到承诺:
firebaseRef.once('value') .then(function(dataSnapshot) { this.setState({ messages: messages }); }).bind(this)
Firebase Firestore onSnapshot无法在ReactJs应用程序上接收更改和渲染
您可以考虑让组件自行更新,这是一种解决方法。我找到了here文档,该文档描述了详细信息。
javascript – 如何在ReactJS中使用setState()方法?
>在构造函数内部
>在渲染方法OR中
>创建一个自定义方法,并在调用render()之前在构造函数的末尾调用它
这是我的代码:
import React from "react"; class StateBasic extends React.Component{ constructor(){ super(); let personProfile = this.state = { name : "Bob",skill : "Art Designer",location : "LA" } console.log(personProfile); } render(){ let changeName = this.setState({ name : "Frank" }); return( <div className="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12"> <ul> <li> {this.state.name} </li> <li> {this.state.skill} </li> <li> {this.state.location} </li> <li> {changeName} </li> </ul> </div> ); } } // Let's render ReactDOM export default StateBasic;
解决方法
class StateBasic extends React.Component { constructor() { super(); let personProfile = this.state = { name: "Bob",skill: "Art Designer",location: "LA" } } componentDidMount() { setTimeout(() => { this.setState({name: "Frank"}); },1000) } render() { return ( <div className="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12"> <ul> <li> {this.state.name} </li> <li> {this.state.skill} </li> <li> {this.state.location} </li> </ul> </div> ); } } ReactDOM.render( < StateBasic / >,document.getElementById('container') )
<script src="https://unpkg.com/react@16.0.0/umd/react.development.js"></script> <div id="container"></div> <script src="https://unpkg.com/react-dom@16.0.0/umd/react-dom.development.js"></script>
reactjs – firebase2.default.firestore不是函数 – React Firebase
当我从firebase配置对象调用firestore时.
它说
firebase2.default.firestore is not a function
这是代码
import firebase from 'firebase' const config = { apiKey: "AIzaSxxxxxxqpUeqKXI",authDomain: "payxxxxxa1.firebaseapp.com",databaseURL: "https://payxxxxxxxa1.firebaseio.com",projectId: "payxxxxxxja1",storageBucket: "payxxxxxa1.appspot.com",messagingSenderId: "281xxxxxxxx576" } firebase.initializeApp(config) export const fire = firebase export const ref = firebase.database().ref() export const firebaseAuth = firebase.auth export const messaging = firebase.messaging(); export const db = firebase.firestore();
Firebase版本是4.5.0
npm list firebase > firebase@4.5.0
我做错了吗?
import’@ firebase / firestore’
参考:https://www.npmjs.com/package/@firebase/firestore
reactjs – Jest失败在React 16升级后无法从’ReactShallowRenderer.js’找到模块’react / lib / React’
问题
运行我的jests测试会出现以下错误
● Test suite Failed to run Cannot find module 'react/lib/React' from 'ReactShalloWrenderer.js' at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:191:17) at Object.<anonymous> (node_modules/react-test-renderer/lib/shallow/ReactShalloWrenderer.js:16:13)
我是如何升级的
第1步:yarn.lock
在rebase期间,使用React v16进入分支 – 我在我的yarn.lock文件上放了yarn 1.1.0 take care of merge conflicts
第2步:添加适配器
我添加了新的适配器setupTestFramework.js
import { configure } from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; configure({ adapter: new Adapter() });
第3步:升级包
并升级了以下套餐:
react "16.0.0",enzyme "3.1.0",jest "21.2.1",babel-jest "21.2.0",
谁能看到我错过的任何东西?
关于reactjs – 在React中使用Firebase承诺的setState和react .then的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Firebase Firestore onSnapshot无法在ReactJs应用程序上接收更改和渲染、javascript – 如何在ReactJS中使用setState()方法?、reactjs – firebase2.default.firestore不是函数 – React Firebase、reactjs – Jest失败在React 16升级后无法从’ReactShallowRenderer.js’找到模块’react / lib / React’等相关知识的信息别忘了在本站进行查找喔。
本文标签: