1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[ReactJS]

Discussão em 'Mobile' iniciado por Stack, Junho 17, 2021.

  1. Stack

    Stack Membro Participativo

    Estou com problemas em manter as imagens na posição correta. Tenho uma lista de imagens, mas quando eu clico no filtro para inverter a ordem, algumas imagens mantém a sua posição.

    Para melhor entendimento eu fiz um exemplo bem limpo e fácil de compreender que simula um problema parecido, com a "mesma estrutura" dos meus projetos, no CodeSandbox.


    const api = [
    {
    name: "Elephant",
    url:
    "https://i.pinimg.com/originals/1e/06/e1/1e06e107f0ca520aed316957b685ef5c.jpg"
    },
    {
    name: "Wallpaper Windoes",
    url: "https://img.ibxk.com.br/2015/07/23/23170425700729.jpg?w=328"
    },
    { name: "No image", url: "" },
    { name: "Tiger", url: "https://www.htmlecsspro.com/exemple/img/imagem.jpg" },
    {
    name: "Lion",
    url:
    "https://blogmedia.evbstatic.com/wp-content/uploads/wpmulti/sites/18/2014/07/24025147/6BaVde_t20_VKbpQ7-e1527130375674.jpg"
    },
    { name: "No image 2", url: "" },
    {
    name: "Google",
    url:
    "https://tecnoblog.net/wp-content/uploads/2020/03/google-imagens-700x394.jpg"
    }
    ];

    function App() {
    const [itemsList, setItemsList] = React.useState([]);
    const [isInverted, setIsInverted] = React.useState(false);

    function reverseAction() {
    setIsInverted(isInverted ? false : true);
    setItemsList(api.reverse());
    }

    React.useEffect(() => {
    setItemsList(api);
    }, []);

    return (
    <div>
    <button onClick={reverseAction}>Reverse</button>
    <p>{isInverted ? "true" : "false"}</p>
    {itemsList.map((item, index) => (
    <Cards key={index} item={item} />
    ))}
    </div>
    );
    }

    const IMG_DEFAULT = 'https://www.luzeoliveira.com.br/index/wp-content/uploads/2017/07/default.png';

    function Cards({ item }) {
    const [img, setImg] = React.useState(IMG_DEFAULT);

    //Os itens tem uma imagem padrão, mas a imagem é alterada se o item tiver sua propria imagem
    React.useEffect(() => {
    if (item.url.length > 1) {
    setImg(item.url);
    }
    }, []);

    //se ocorrer erro ao carregar a imagem do item, então volta para a imagem padrão
    function onErrorImg() {
    setImg(IMG_DEFAULT);
    }

    return (
    <div>
    <p>{item.name}</p>
    <img style={{height: 200 }} src={img} alt="img" onError={onErrorImg} />
    </div>
    );
    }

    ReactDOM.render(<App /> , document.querySelector("#app"));

    <script crossorigin src="https://unpkg.com/react@17/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>

    <div id="app"></div>

    Continue reading...

Compartilhe esta Página