- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个简单的 React HTML 输入组件,当它在不同的部分/页面上使用时,我添加了一些 Prop 来设置它及其占位符的样式。问题是有时我在编译时遇到错误(我们使用的是nextjs)。这是代码:
{placeHolderColor && (<style jsx>{`input::placeholder{color:${placeHolderColor}}`}</style>)}
基本上,我使用的是 inline If with Logical && Operator在 render 函数中检查 prop placeHolderColor 是否存在,如果存在则添加样式标签。
我收到的错误:
Warning: Unknown prop
jsx
on tag. Remove this prop from the element.
仅当您重新加载页面时才会出现该错误。如果您进行了更改并且热代码重新加载运行,则不会出现错误。不确定问题是否出在文字内的 var、'::placeholder' 伪元素或什么。代码无论如何都可以工作,如果定义了 placeHolderColor var,则应用样式。
最佳答案
当我测试你的代码时,我遇到了同样的错误(也在页面加载时)。之后,我在 ZEIT 的 #next slack channel https://zeit.chat/ 上与昵称 @g(在 github @giuseppeg)的 jsx 开发者进行了交谈。并且他确认有条件使用<style jsx>
不支持标签。这是他的解释https://github.com/zeit/styled-jsx/issues/233 .
此外,删除条件并像这样插入标签后:
<style jsx>{'input::placeholder{color:${placeHolderColor}}'}</style>
我遇到了这个错误:
Module build failed: SyntaxError: Expected placeHolderColor to not come from the closest scope. Styled JSX encourages the use of constants instead of props or dynamic values which are better set via inline styles or className toggling. See https://github.com/zeit/styled-jsx#dynamic-styles.
根据https://github.com/zeit/styled-jsx#dynamic-styles的建议,您基本上不应该将动态值添加到 <style jsx>
内的模板文字中标签(尽管您可以从版本 1.0.4 开始放置常量和常量表达式(有关详细信息,请参阅答案底部的更新))。根据 slack 线程 https://zeit-community.slack.com/archives/C2U01UYEA/p1496928897076534 中的 @giuseppeg 评论,禁止使用 props/dynamic 值背后的原因,如下:“目前 styled-jsx 编译并生成静态代码,因此当像 color
这样的变量的值发生变化时,使最终 CSS 唯一的哈希值不会改变”
因此,正如您从文档中看到的那样,建议通过内联样式或类名切换来使用动态值。不幸的是,在 React 中通过内联样式设置伪元素(占位符等)的样式是不可能的,所以如果你有有限数量的可能颜色,那么为每种颜色情况创建一个类并像这样使用它:
const InputWithColouredPlaceholder = props => (
<div>
<input
placeholder="text"
className={
'placeholderColourClass' in props && props.placeholderColourClass
}
/>
<style jsx>{`
.reddy::placeholder {
color: red;
}
.greeny::placeholder {
color: green;
}
`}</style>
</div>
);
并将其渲染为 <InputWithColouredPlaceholder placeholderColourClass="reddy" />
但是,如果可能的颜色范围很大,情况会变得更加复杂。在这种情况下,我建议在 ZEIT 的 slack https://zeit.chat/ 的#next channel 中寻求建议。 .
更新在模板文本中使用常量和常量表达式应该可以在 styled-jsx 1.0.4 中使用(但 nextjs 目前依赖于 1.0.3,单独安装 styled-jsx 不会有帮助,因此请等待 nextjs 更新以支持 styled jsx 1.0。 4).这意味着任何未通过 props 传递且未在组件内部创建的常量都应该起作用(例如,您可以拥有一个包含颜色常量的 js 文件,并将它们导入到输入组件中)。但它不适合您的情况,因为您需要一种动态的方式。
关于javascript - jsx 上的占位符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44416130/
typescript 抛出: Cannot use JSX unless the '--jsx' flag is provided.ts(17004) 更改后tsconfig.json jsx至 re
我正在尝试使用 JSX 表达式作为另一个 JSX 表达式的生成主体的一部分: render() { return ( {[...Array(5).keys()].
eslint jsx-quotes 规则在 Visual Studio 代码中不起作用。配置: .eslintrc.json: { "plugins": ["jsx"], "parse
如果我声明 var A = new Set(...........); var B = new Set(...........); 是否有 JSX 操作来计算两组 A - B 的差异? 最佳答案
这个问题在这里已经有了答案: How to render react components by using map and join? (18 个答案) 关闭 5 年前。 我遇到过这样的情况,我有
完成执行另一个 .jsx 脚本后,如何让我的 .jsx 脚本? 也许这将有助于理解我正在尝试做的事情: // WebCard.jsx file function mySnippet(){ //
JSX 不允许多次指定一个属性。 F.ex. /* /* where obj contains an attribute called "prop1" */ 属性的顺
我在尝试使用循环数组构建自定义组件时遇到问题,该循环数组有条件地呈现不同的元素。该组件包含特殊的类名,用于生成每行 3 个元素的网格,与传递给组件的参数数量无关。 我正在使用 map用于遍历条件索引,
我有一个要从 JS 转换为 TS 的 React 项目。我遇到的一个问题是 TSX React 假设功能组件中定义的所有属性都是必需的 Prop 。 // ComponentA.tsx class C
我有一个通过数组映射的 React 组件。 每个数组项都有一个可选的 ID 类型。 如果我有这个 ID,我将渲染一个元素,否则什么都不渲染。 这个元素有一个 onClick 调用函数接受 ID 作为参
我目前正在编写一个带有 ref 元素的 StencilJS 组件,我需要将其作为 @Prop 传递给另一个元素。像这样: this.canvas = el}> 创建颜色选择器时,this.canv
我正在尝试将对象传递给 react 中的 jsx 标记的值 我将标签选项的值设置为一个对象 onChange 我得到了标签 中的值并用值设置本地状态 我控制台记录了本地状态,但它返回了 [objec
我正在尝试使用 Chart.js 和 Typescript 在 React 中构建应用程序,但是当尝试渲染折线图时,我在这一行收到上述错误: . 除此之外,我还收到消息“类型‘ChartCompone
我正在使用一个变量来有条件地显示不同的 JSX,并且它没有使用在其父函数中定义的样式。我怎样才能做到这一点? 您可以在此处查看演示:https://codesandbox.io/s/styled-js
使用 Nextjs 和 styled-jsx 我编写了下面的组件。 现在我想知道如何将 styled-jsx 应用于从 getLinks 方法返回的 jsx。 在下面的示例中,来自 getLinks
所以我现在的问题是,如果我有一个 JSX 父组件,但我需要包含一个 html 标签,例如 我认为 React JSX 不支持它(如果我错了请纠正我)我可以混合使用 jsx 和非 jsx 组件吗?我个人
我正在编写一个 react 应用程序来从嵌套对象数组中打印 TreeView 。每个节点都应该是可折叠的(默认打开)。一个节点可以有任意数量的子节点。这是我想要实现的示例: 我正在将所有节点组件收集到
它不是 React 项目,也不是 V-DOM 相关的。我只需要一个 jsx 运行时编译器到 (HTML/XML) 字符串,稍后将用作 element.innerHTML = result 它应该用作支
当 jsx 跨越多行时,哪种 eslint 规则更喜欢前者而不是后者?目前 prettier 正在从 preferred 变为 notPreferred const preferred = (
我正在使用 IDEA 2017.2。我需要设置 JSX codestyle,这样大括号之间就有空格,比如 { event.series } 。但是,它会将其自动格式化为 {event.series}
我是一名优秀的程序员,十分优秀!