小编iqb*_*125的帖子

使用 react-testing-library 测试 useContext()

我想我找到了另一种使用useContext钩子测试组件的方法。我看过一些教程,这些教程测试一个值是否可以从父上下文提供者成功传递给子组件,但没有找到关于更新上下文值的子组件的教程。

我的解决方案是将根父组件与提供程序一起呈现,因为状态最终在根父组件中更改,然后传递给提供程序,然后提供程序将其传递给所有子组件。对?

测试似乎在应该通过的时候通过,在不应该通过的时候不通过。有人可以解释为什么这是或不是测试useContext钩子的好方法吗?

根父组件:

...
const App = () => {
  const [state, setState] = useState("Some Text")

  const changeText = () => {
    setState("Some Other Text")
  }
...

  <h1> Basic Hook useContext</h1>
     <Context.Provider value={{changeTextProp: changeText,
                               stateProp: state
                                 }} >
        <TestHookContext />
     </Context.Provider>
)}
Run Code Online (Sandbox Code Playgroud)

上下文对象:

import React from 'react';

const Context = React.createContext()

export default Context
Run Code Online (Sandbox Code Playgroud)

子组件:

import React, { useContext } from 'react';

import Context from '../store/context';

const TestHookContext = () => {
  const context = …
Run Code Online (Sandbox Code Playgroud)

testing reactjs jestjs react-hooks

9
推荐指数
2
解决办法
7865
查看次数

react-native-maps with expo

所以我试图让原生地图在世博应用程序中工作,文档页面说“世博应用程序中不需要设置”

https://docs.expo.io/versions/latest/sdk/map-view/?redirected

但是在使用 expo 安装库后,它不起作用。

我有两个关于为什么它不起作用的基本问题:

  1. 你把谷歌控制台的 API 密钥放在哪里?
  2. 你如何启用谷歌地图与控制台上的世博应用程序一起工作,启用android sdk?

react-native react-native-maps

8
推荐指数
2
解决办法
1万
查看次数

在intersectionObeserver API 中isVisible 属性是什么意思?

在评论中私刑我之前,请听我说完。

当元素滚动到视图中时,intersectionobserver 应该监听吗?

但是当我这样做时,isVisible 属性是错误的,无法弄清楚原因。我认为这是因为我不理解 isVisible 属性,因为其他属性正在工作。

这是我的代码:

import React, { useRef, useEffect, useState, useContext } from 'react'
import ReactGA from 'react-ga';
import Context from '../utils/context'


const Home = props => {
  const context = useContext(Context)
  const [scrollState, setScroll] = useState(false)
  const intersectTarget = useRef(null)

  useEffect(() => {
    // ReactGA.pageview(props.location.pathname);
    if(!context.initialLoadProp) {
      context.setInitialLoadProp(true)
    }
  }, [])

  useEffect(() => {
    const opts = {
            root: null,
            rootMargin: '0px',
            threshold: 0
    }
    const callback = entry => {
        console.log(entry)
    }
    const observerScroll …
Run Code Online (Sandbox Code Playgroud)

html reactjs

7
推荐指数
4
解决办法
2467
查看次数