为什么在React思维教程中产品搜索过滤器不起作用?
Why is the product search filter not working in the Thinking in React tutorial
我正在尝试学习ReactJs,并开始遵循官方文档上的教程。由于某种原因,step4之后的搜索过滤器文本框似乎是只读的。它没有接收我输入的任何文本。这里的问题是什么?
这是教程的链接——https://facebook.github.io/react/docs/thinking-in-react.html
看起来搜索栏呈现的方式有一些问题。但是我不知道它是什么。
var SearchBar = React.createClass({
render: function() {
return (
<form>
<input type="text" placeholder="Search..." value{this.props.filterText}/>
<p>
<input type="checkbox" checked={this.props.inStockOnly} />
{' '}
Only show products in stock
</p>
</form>
);
}
});
https://jsfiddle.net/reactjs/zafjbw1e/?utm_source=website& utm_medium = embed& utm_campaign = zafjbw1e
如果你看第5步,他们会告诉你为什么这不起作用。它们通过onChange内部的函数来实现这一点。记住:React完全是关于组件层次结构的单向数据流。所以你传递给组件的props来自于父组件。如果你读得深入,他们会教你心流是如何运作的。;)
希望能帮到你;)
PS是只读的,因为值props是空字符串;)因为你没有推到顶部的新状态,所以你没有改变它。
var FilterableProductTable = React.createClass({
getInitialState: function() {
return {
filterText: '', // HERE AM EMPTY AND YOU DONT PASS NEW STATE SO I STAY EMPTY
inStockOnly: false
};
},
render: function() {
return (
<div>
<SearchBar
filterText={this.state.filterText}
inStockOnly={this.state.inStockOnly}
/>
<ProductTable
products={this.props.products}
filterText={this.state.filterText}
inStockOnly={this.state.inStockOnly}
/>
</div>
);
}
});
<input>
是一个所谓的受控元件,简单地说,输入栏内的值被<input>
元素的value
属性所控制,因此只能通过设置value
属性来改变该值。试着改变value={this.props.filterText}
来value={"aa"}
你就会明白我的意思。只要遵循教程,一切都会好的
相关文章:
- 如何在较新版本的 Free-JQGard 中重置搜索工具栏和搜索过滤器
- Angular实现多搜索过滤器
- 如何在免费的jqGrid中获得onCellSelect中所选的搜索过滤器
- 如何忽略LDPA搜索过滤器中的多余空间
- 如何在搜索过滤器jQuerymobile中查找可见列表项的计数
- 使用KnockoutJS搜索过滤器
- jQuery/Datatables:在基本DataTable中包含许多不同的搜索过滤器类型和字段
- 在同一页面上的多个搜索框上动态应用 Jquery 中的搜索过滤器
- 角度:在包含外部数据的ng重复上搜索过滤器
- Angular.js,中的搜索过滤器
- PHP MySQL 和 AJAX 搜索过滤器延时
- AngularJS ngOptions 搜索过滤器 - 删除重复的选择选项
- Angular JS 搜索过滤器不会使用 Firebase 过滤数据
- 如何在 angularjs 中为特殊字符应用搜索过滤器
- AngularJS搜索过滤器在数组中进入对象
- 同位素搜索过滤器几乎想通了
- 搜索过滤器未重置 jquery 移动
- 弹性搜索搜索过滤器等于问题
- jQuery表在PHP生成的表上搜索过滤器
- 如何在键入时应用ajax/json搜索过滤器