Reactjs 如果变量为';是空的吗?

Reactjs 如果变量为';是空的吗?,reactjs,ecmascript-6,graphql,Reactjs,Ecmascript 6,Graphql,如果变量searchQuery的值是空字符串,并且将此逻辑放在模板文本中,那么如何省略该变量 代码: 您可以使用一个使用模板字符串的函数来构建查询。 您可以添加更多变量或控件以满足您的需要 const myvars = { searchQuery : "", mType : "pdf", filterMethod : "asc", season : "" } const buildQuery = (vars) => { let sq = vars.searchQuery ==

如果变量searchQuery的值是空字符串,并且将此逻辑放在模板文本中,那么如何省略该变量

代码:


您可以使用一个使用模板字符串的函数来构建查询。 您可以添加更多变量或控件以满足您的需要

const myvars = {
 searchQuery : "",
 mType : "pdf",
 filterMethod : "asc",
 season : ""
}


const buildQuery = (vars) => {
let sq = vars.searchQuery == "" ? "" : "$searchQuery: String,"
let mt = vars.mType == "" ? "" : "$mType: MediaType,"
let fm = vars.filterMethod == "" ? "" : "$filterMethod: [MediaSort],"
let ss =  vars.season == "" ? "" : "$season:MediaSeason"
var query = `query RunSearch(${sq} ${mt} ${fm} ${ss}){
  Page(perPage:10, page: 1){
    pageInfo {
      total
      currentPage
      lastPage
      hasNextPage
      perPage
    }

    media(type: $mType, search: $searchQuery, sort:$filterMethod, season:$season){
    title{
    english
  }
    format,
    description(asHtml:true),
    averageScore,
    studios(isMain:true) {
      nodes {
        name
      }
    },
    coverImage {
      large
      color
    },
    genres
  }
  }

}`;
return query;
}

let myquery = buildQuery(myvars);
console.log(myquery)

你可以检查你得到的变量,然后根据你的意思构建查询。你是说一个带有不同查询赋值的if-else语句?我已经这样做了,但是这是很多重复的代码,没有更好的方法吗?像这样的?是的,需要在这行tho中添加另一个类似的变量,谢谢
media(${sq2}type:$mType,sort:$filterMethod,seasure:$seasure)
const myvars = {
 searchQuery : "",
 mType : "pdf",
 filterMethod : "asc",
 season : ""
}


const buildQuery = (vars) => {
let sq = vars.searchQuery == "" ? "" : "$searchQuery: String,"
let mt = vars.mType == "" ? "" : "$mType: MediaType,"
let fm = vars.filterMethod == "" ? "" : "$filterMethod: [MediaSort],"
let ss =  vars.season == "" ? "" : "$season:MediaSeason"
var query = `query RunSearch(${sq} ${mt} ${fm} ${ss}){
  Page(perPage:10, page: 1){
    pageInfo {
      total
      currentPage
      lastPage
      hasNextPage
      perPage
    }

    media(type: $mType, search: $searchQuery, sort:$filterMethod, season:$season){
    title{
    english
  }
    format,
    description(asHtml:true),
    averageScore,
    studios(isMain:true) {
      nodes {
        name
      }
    },
    coverImage {
      large
      color
    },
    genres
  }
  }

}`;
return query;
}

let myquery = buildQuery(myvars);
console.log(myquery)