使用标记的模板文字传递更多参数
Passing further arguments with tagged template literals
我正在使用 styled-components 并使用其标记的模板文字语法生成组件,例如:
const Button = styled.button`
background-color: papayawhip;
border-radius: 3px;
color: palevioletred;
`
在一种情况下,我需要调用一个函数,该函数根据断点 和 传递要包含在其中的标记模板文字 css 来生成媒体查询。
例如:
media(12)`
background-color: papayawhip;
`
媒体功能可能如下所示:
const media = mapValues(width => ({ css: (...args) => css`
@media (min-width: ${width}rem) {
${css(...args)}
}
`}));
是否可以同时传递一个值和一个标记的模板文字,还是我的处理方式有误?
Tagged template literals 没有魔法,您只需要 return 您的 media(12)
调用中的另一个函数:
function media(twelve) {
return function(stringParts, ...interpolationValues) {
return …
}
}
或使用箭头函数
const media = (twelve) => (stringParts, ...interpolationValues) => …;
被称为
media(12)`firstPart secondPart`
// or equvialently
media(12)(["firstPart ", " secondPart"], 13)
但是,如果你不需要做任何插值,只是想接收一个字符串,那么写一个带有参数的函数可能会更容易
function media(twelve, string) {
return …;
}
并将其命名为
media(12, `
templateString
`)
我正在使用 styled-components 并使用其标记的模板文字语法生成组件,例如:
const Button = styled.button`
background-color: papayawhip;
border-radius: 3px;
color: palevioletred;
`
在一种情况下,我需要调用一个函数,该函数根据断点 和 传递要包含在其中的标记模板文字 css 来生成媒体查询。
例如:
media(12)`
background-color: papayawhip;
`
媒体功能可能如下所示:
const media = mapValues(width => ({ css: (...args) => css`
@media (min-width: ${width}rem) {
${css(...args)}
}
`}));
是否可以同时传递一个值和一个标记的模板文字,还是我的处理方式有误?
Tagged template literals 没有魔法,您只需要 return 您的 media(12)
调用中的另一个函数:
function media(twelve) {
return function(stringParts, ...interpolationValues) {
return …
}
}
或使用箭头函数
const media = (twelve) => (stringParts, ...interpolationValues) => …;
被称为
media(12)`firstPart secondPart`
// or equvialently
media(12)(["firstPart ", " secondPart"], 13)
但是,如果你不需要做任何插值,只是想接收一个字符串,那么写一个带有参数的函数可能会更容易
function media(twelve, string) {
return …;
}
并将其命名为
media(12, `
templateString
`)