Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

Imaginando de onde vem o problema

Estou em 'Importando negociações' e o método 'importaNegociações()' não funciona exatamente ao clicar no botão 'importar', mas quando o próprio botão é clicado novamente, ou então, ao clicar o botão 'apagar', por exemplo.


Clico no botão 'importar' = objetos importados mas nenhuma mensagem é exibida
Clico em 'apagar' = objetos apagados, mensagem exibida relativa a ação anterior

E assim por diante, com as ações ok e a mensagem exibida sendo a da ação anterior.

Não mandei o código porque gostaria de ajuda para refletir sobre qual o problema que está acontecendo, em geral eu tenho uma ideia sobre o que é o problema e continuo com dúvida, mas nesse caso nem ideia eu tenho.

11 respostas

Na verdade o método funciona ao clicar no botão, o problema é a mensagem exibida.

Fala ai Camila, tudo bem? Sem ver o código é bem complicado, mas, se ao clicar no botão o método é chamado, então eu chutaria que ou faltou chamar o código para mostrar a mensagem ou talvez o elemento que mostre a mensagem não foi encontrado.

Espero ter ajudado.

Mas mesmo quando, ao clicar novamente no botão, a mensagem relativa ao clique anterior aparece? Isso que não estou estendendo. Vou por o código aqui.

Limpando o post pra facilitar a leitura

Limpando o post pra facilitar a leitura

solução!

Eu não entendi, mas a solução estava em uma das aulas. Em ProxyFactory.js, faltava a seguinte linha:

target[prop] = value;

O fragmento completo é:

// código omitido
set(target, prop, value, receiver) {

                if(props.includes(prop)) {
                    target[prop] = value;                    
                    acao(target);
                };
                return Reflect.set(target, prop, value, receiver);
            }

// código omitido

Tentei entender a explicação na lição, mas sem sucesso, se alguém puder explicar com outras palavras, agradeço!

Fala ai Camila, tudo bem? O problema é porque dentro do seu set no ProxyFactory ao criar um Proxy a função set dele não estava permitindo alterar os valores dos objetos, ou seja:

const obj = { nome: 'Matheus' }

// não era possível fazer essa alteração
obj.nome = 'Castiglioni'

Quando você adicionou o trecho: target[prop] = value, agora o set consegue alterar o valor interno dos objetos.

Isso porque o target seria o obj, a prop seria nome e o value seria Castiglioni.

Espero ter ajudado.

Entendi, o programa não tinha as ferramentas pra acessar o value, e aí "target[prop] = value" foi a via de acesso (certo?). Valeu Matheus!

Fala Camila, na verdade ele não tinha maneiras de alterar valores, ai com o trecho target[prop] = value ele passou a conseguir modificar valores em um objeto pré existente.

Espero ter ajudado.

Valeu!

Magina Camila, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.