您可以通过左右滑屏查看更多笔记内容。。
//拆分组件------
const isSearched=serachTeam=>item=>
item.title.toLowerCase().includes(serachTeam.toLowerCase());
class App extends Component{
//构造函数
constructor(){
super();
this.state={
list,
serachTeam:'',
}
//绑定删除函数
this.onDissmisss=this.onDissmisss.bind(this);
//绑定onSerachChange函数
this.onSerachChange=this.onSerachChange.bind(this);
}
//删除函数
onDissmisss(id){
// 找到除点击外的其他id
function isNotId(item){
return item.objectID!==id;
}
//在原数组中筛选包含其他id的一个新的数组
const updateList=this.state.list.filter(isNotId);
// 重新设置state
this.setState({list:updateList});
}
//onChange函数,event对象的target属性中带有输入框的值
onSerachChange(event){
// 得到我输入框的内容
this.setState({serachTeam:event.target.value});
}
// render()函数,onChange 当内容发生改变时触发
render(){
const {serachTeam,list}=this.state;
return(
<div className="App">
{/* 用于搜索的输入组件 */}
<Search
value={serachTeam}
onChange={this.onSerachChange}
/>
{/* 用于展示的列表组件 */}
<Table
list={list}
pattern={serachTeam}
onDissmisss={this.onDissmisss}
/>
</div>
);
}
}
//Search 组件
class Search extends Component{
render(){
// value={serachTeam},onChange={this.onSerachChange}
const{value,onChange}=this.props;
return(
<form>
<input type="text"
value={value}
onChange={onChange}
/>
</form>
);
}
}
//Table组件
class Table extends Component{
render(){
// list={list}, pattern={serachTeam},onDissmisss={this.onDissmisss}
const {list,pattern,onDissmisss}=this.props;
return(
<div>
{list.filter(isSearched(pattern)).map(item=>
<div key={item.objectID}>
<span>
<a href={item.url}>{item.title}</a>
</span>
<span>{item.points}</span>
<span>{item.author}</span>
<span>{item.num_comments}</span>
<span>
<button
onClick={()=>onDissmisss(item.objectID)}
type="button"
>
Dissmiss</button>
</span>
</div>
)}
</div>
)
}
}
export default App;
都用于描述组件的特性,可能会产生混淆。一个简单的区分方法是,this.props 表示那些一旦定义,就不再改变的特性,而 this.state 是会随着用户互动而产生变化的特性。
在 props 对象中还有一个小小的属性可供使用: children 属性。通过它你可以将元素从上 层传递到你的组件中,这些元素对你的组件来说是未知的,但是却为组件相互组合提供了 可能性。
<Search
value={searchTerm}
onChange={this.onSearchChange}
>
//编写内容
Search
</Search>
##### 在 Search 组件可以从 props 对象中解构出 children 属性。然后它就可以指定这个 children应该显示在哪里。
class Search extends Component {
render() {
const { value, onChange, children } = this.props;
return (
<form>
//制定显示位置
{children}
<input
type="text"
value={value}
onChange={onChange}
/>
</form>
);
}
}