Closed SallesCosta closed 1 year ago
Oi @SallesCosta! O problema parece estar no seu reducer. Se o estado de isOpened
está vindo como undefined
no primeiro render, significa que você não deve ter definido um estado inicial para ele no reducer =)
Bom dia @fdaciuk! O problema do undefined
era porque o path estava errado.. deveria ser:
isOpened: state.ui.isRegisterVideoFormOpened
faltou o ui
. O console.log do state inicial ta perfeito.
No entanto eu ainda não consigo ver(exibir) o estado mudando dentro do botão. (true/false).
Segue a foto e a nova versao do componente:
import React from "react";
import { connect } from "react-redux";
import styled from "styled-components";
import { headerHeight } from "utils/constants";
import { openRegisterVideo } from "reducers/ui/action-creators";
const MainHeader = ({ onOpenRegisterVideo, isOpened }) => {
console.log("isOpened: ", isOpened);
return (
<Header>
<HeaderTitle>Reactflix</HeaderTitle>
<RegisterButton onClick={onOpenRegisterVideo}>
Cadastrar vídeo
</RegisterButton>
<button>{isOpened}</button>
</Header>
);
};
const mapStateToProps = (state) => ({
isOpened: state.ui.isRegisterVideoFormOpened,
});
const mapDispatchToProps = (dispatch) => ({
onOpenRegisterVideo: () => dispatch(openRegisterVideo()),
});
export default connect(mapStateToProps, mapDispatchToProps)(MainHeader);
Perfeito! Sobre a exibição, o React não renderiza valores booleanos, null
ou undefined
.
Pra exibir esses dados, você precisa transformá-los em string:
String(isOpened)
// ou
`${isOpened}`
Aí sim o valor será exibido :)
Deu certo.. Obrigado!
Tudo bem Daciuk? No projeto do ReactFlix, eu estou mexendo para praticar e me deparei com algo simples. Como exibir um estado? Olha o exemplo a baixo. No Header eu quero um botão que mostre
true
oufalse
que é o estado deopenRegisterVideo
.No código abaixo é o Header porém eu tirei os estilos e adicionei o
mapStateToProps
comisOpened
e também como primeiro parâmetro doconnect
.Ao dar um console.log em
isOpened
, inicialmente daundefined
O que estou deixando escapar.@fdaciuk