Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

React Native: Design System no seu app: ERROR TypeError: undefined is not an object (evaluating 'Context._context')

Boa noite, estou fazendo o curso "React Native: Design System no seu app" e estou com o seguinte erro: ERROR TypeError: undefined is not an object (evaluating 'Context._context')

Alguém consegue me ajudar ? Pois não achei uma solução ..

ERROR TypeError: undefined is not an object (evaluating 'Context._context')

This error is located at: in Sacola (at Cabecalho/index.js:13) in RCTView (at View.js:32) in Unknown (at Cabecalho/index.js:9) in Cabecalho (at ListaProdutos/index.js:16)

Segue os fontes em que o erro persiste:

index.js do componente Sacola:

import React, { useContext } from 'react';
import { StyleSheet, Text, View, Image } from 'react-native';
import { useNavigation } from '@react-navigation/native';
import { TouchableOpacity } from 'react-native-gesture-handler';
import { FONT_FAMILY_SEMI_BOLD, RED, WHITE } from '../../../../styles/styles';
import { DataContext } from '../../../../provider';

export const Sacola = () => {
    const navigation = useNavigation();
    const { itensCheckout } = useContext(DataContext);

    return (
        <TouchableOpacity onPress={() => navigation.push('Checkout')}>
            <View style={styles.containerSacola}>
                <Image
                    source={require('../../../../assets/images/icone-sacola.png')}
                    style={styles.imagem}
                />
                {itensCheckout.length > 0 ? (<View style={styles.containerQuantidade}>
                    <Text style={styles.textoQuantidade}>7</Text>
                </View>) : null}
            </View>
        </TouchableOpacity>
    );
};

const styles = StyleSheet.create({

    containerSacola: {
        backgroundColor: WHITE,
        padding: 18,
        borderRadius: 30,
    },
    imagem: {
        height: 30,
        width: 30,
    },
    containerQuantidade: {
        backgroundColor: RED,
        borderRadius: 100,
        marginTop: -22,
        marginLeft: 11
    },
    textoQuantidade: {
        textAlign: 'center',
        padding: 4,
        fontSize: 10,
        fontFamily: FONT_FAMILY_SEMI_BOLD,
        color: WHITE
    }

})

index.js do provider:

import React, { useState } from 'react';
const DataContext = React.createContext();

const Provider = ({ children }) => {
    const [itensCheckout, setItensCheckout] = useState([]);
    return (
        <DataContext.Provider
            value={{
                itensCheckout,
                adicionarItem: (novoItem) => {
                    let copiaItensCheckout = [...itensCheckout];
                    let itemFiltrado = copiaItensCheckout.find((item) => item.id == novoItem.id,);

                    if (itemFiltrado) {
                        itemFiltrado.quantidade = itemFiltrado.quantidade + 1;
                    } else {
                        item.quantidade = 1;
                        copiaItensCheckout = [...copiaItensCheckout, novoItem];
                    }
                    setItensCheckout(copiaItensCheckout);
                },
            }}>
            {children}
        </DataContext.Provider>
    );
};

export default Provider;
1 resposta
solução!

Olá Willian, tudo bem?

O erro que você está enfrentando é um TypeError que indica que o objeto Context não foi definido corretamente.

Pelo código que você compartilhou, parece que o DataContext está sendo importado corretamente no componente Sacola. No entanto, pode ser que o DataContext não esteja sendo definido corretamente no arquivo do provider.

Uma sugestão para resolver esse problema seria verificar se o DataContext está sendo exportado corretamente no arquivo do provider. Certifique-se de que o nome da variável exportada seja exatamente o mesmo que a variável importada no componente Sacola.

Outra sugestão seria verificar se o DataContext está sendo importado corretamente em outros componentes que utilizam esse contexto.

Espero ter ajudado e bons estudos!