Solucionado (ver solução)
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.