为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据 JSON 文件中的布尔值自动添加过滤器

如何根据 JSON 文件中的布尔值自动添加过滤器

犯罪嫌疑人X 2022-01-13 16:08:06
我有一个 JSON 文件:[ { "id": 1, "img": "https://example.jpg", "availability": false }, { "id": 2, "img": "https://example.jpg", "availability": true }]我想要实现的是让 JSONavailability : false自动应用过滤器。这是我要应用的过滤器,我想将其应用到 img className="tile-image":-webkit-filter: grayscale(100%);filter: grayscale(100%);到目前为止,这是我的代码: import React, { Component } from 'react'; import './styles.css' class GetOnlinePosts extends Component {  constructor(props){    super(props);    this.state = {        error : null,        isLoaded : false,        posts : []              };}componentDidMount(){    fetch("https://api.myjson.com")    .then( response => response.json())    .then(        (result) => {            this.setState({                isLoaded : true,                posts : result            });        },        (error) => {            this.setState({                isLoaded: true,                error            })        },    )}render() {    const {error, isLoaded, posts} = this.state;    const orderedPosts = [...posts.filter((post) => post.availability), ...posts.filter((post) => !post.availability)]    if(error){        return <div>Error in loading</div>    }else if (!isLoaded) {        return <div>Loading ...</div>    }else{        return(            <div>                <div className="tiles">                {                    orderedPosts.map(post => (                        <div key={post.id}>                         <div className="tile">                                <img className="tile-image" src={post.img} alt=""/>                         </div>                     </div>                    ))                }                </div>            </div>        );       }     }   }export default GetOnlinePosts;有关如何以虚假可用性将过滤器添加到 JSON 的任何帮助都会很棒。
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

你有没有关于添加css类


   .is-available {

    -webkit-filter: grayscale(100%);

    filter: grayscale(100%);

    }

然后在组件中做


 <div className="tile">

  <img className={`tile-image ${availability && "is-active"} `} src={post.img} alt=""/>

 </div> 


查看完整回答
反对 回复 2022-01-13
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我认为最简单的方法是添加一些类,比如说unavailable不可用的图像。


{orderedPosts.map(post => (

        <div key={post.id}>

            <div className="tile">

                <img className={`tile-image ${!post.availability ? "unavailable" : ""}`} src={post.img} alt=""/>

            </div> 

        </div>

    ))

}

然后在你的 CSS 中:


.unavailable {

    -webkit-filter: grayscale(100%);

    filter: grayscale(100%);

}


查看完整回答
反对 回复 2022-01-13
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您可以进行条件渲染,它会检查availability= false 它将添加内联样式[或者您可以添加一个类]


   <div className="tiles">

        {

            orderedPosts.map(post => (

                <div key={post.id}>

                 <div className="tile">

                        <img className="tile-image" src={post.img} 

                          style={{

                          '-webkit-filter': !post.availability ? 'grayscale(100%)' : 'none;

                          filter: !postavailability ? 'grayscale(100%)' : 'none';

                          }}

                          alt=""/>

                 </div> 

            </div>

            ))

        }

        </div>


查看完整回答
反对 回复 2022-01-13
  • 3 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信