我有一个组件slider
,它仅由用于某个参数标题的
this.props.initialvalue
。如果尝试用
为
赋予
默认值,则得到:bundle.js:357警告:滑块包含一个range类型的输入,它同时包含value和defaultValue道具。输入元素必须是受控或不受控的(指定value prop或defaultValue prop,但不能同时指定两者)。决定使用受控或不受控输入元素,并删除这些道具之一。更多信息:链接
这就是我首先阅读Controlled Components
的原因。我想我理解了DefaultValue
如何与存储状态本身的Input
元素相关,而这与受控组件完全无关。
那么我的问题是如何将滑块初始化为一个值??Google搜索显示的内容很少,除了以下内容:并且由于在构造函数中,我将state.value
初始化为this.props.initialvalue
,所以我认为组件的第一次呈现会给出一个具有该值的滑块。但事实并非如此。
下面是我当前的组件代码:
class Slider extends React.Component {
constructor(props) {
super(props)
this.state = {
value: props.initialValue
}
this.sliderChanged = this.sliderChanged.bind(this)
}
sliderChanged(e) {
this.setState( { value: e.target.value} );
this.props.valueChanged(e.target.value)
}
render() {
const containerStyle = {
display: "grid",
gridTemplateRows: "2fr 3fr",
textAlign: "center",
}
const titleStyle = {
backgroundColor: "purple",
color: "white",
textAlign: "center",
}
const sliderStyle = {
backgroundColor: "orange",
}
console.log(this.state)
return (
<div style={containerStyle}>
<div style={titleStyle}>{this.props.title}</div>
<div style={sliderStyle}>
<input
type="range"
value={this.state.value}
onChange={this.sliderChanged} />
</div>
</div>
)
}
}
共1个答案
匿名用户
React blog建议使用键
道具强制输入到rerender,这样您就可以使用新的道具重新初始化状态。
<Slider key={initialValue}/>
React blog建议使用键
道具强制输入到rerender,这样您就可以使用新的道具重新初始化状态。
<Slider key={initialValue}/>
问题内容: 这是我的小提琴 https://codepen.io/seunlanlege/pen/XjvgPJ?editors=0011 我有两个输入,并且我试图使用一种方法来处理任何输入字段的事件。 我已经在互联网上四处寻找解决方案,但一无所获。 我正在使用es6,请问该如何处理? 问题答案: 您尚未将属性传递给handeChange函数。像传递它一样,并且接收道具的顺序是错误的,属性将是第一个
我试图创建一个组件上传一个单一的图像,显示其预览和删除选项。此外,能够从后端base64编码的URL上传到字段中也很重要。这就是我此刻所拥有的。我将从应用程序状态传递到组件道具中,我实现了处理程序,这样它就可以将URL写入状态,而只是从状态中删除URL。 但是现在我想用一个拖放区域来代替通常的输入,并寻找最简单的方法来做到这一点。如果有任何帮助,我将不胜感激。 然后创建这样一个组件。 但对我不起作
给定一个具有受控输入的React组件,我希望能够: 设置来自父级状态的输入值 允许用户将输入更改为任意值 只有在用户提交并且输入通过验证后才更新父级的状态。 我可以用下面的代码片段完成1和2,但是由于值是通过props进入ChildComponent的,所以我不确定如何在不更改父级上myInput的值的情况下更改输入值。
在此对话框,您可以输入默认的密码,这可应用在添加、解压、测试和查看选项时。 如果“显示密码”选项被禁用并且压缩文档操作时需要密码,您将会被要求输入密码两次来进行正确性的确认。 如果您设置了“加密文件名选项”,WinRAR 不只加密数据,而且加密所有包括文件数据、文件名、大小、属性、注释和其它块等所有可感知的压缩文件区域,所以它提供了更高的安全等级。在压缩文件中使用这个命令加密,没有密码甚至不可能查
在angularJs中,我有一个输入文本框,如何设置默认值?我尝试了但失败了。