const sortData = (name, data) => {
return data.sort((a, b) => {return b[name] - a[name]});
};
class LeaderTable extends React.Component {
renderByRecent() {
let data = sortData('recent', this.props.list);
ReactDOM.render(
<LeaderTable list={data}/>,
document.getElementById('board'))
}
render() {
return (
<table className="table table-bordered">
<thead>
<tr>
<td><strong>#</strong></td>
<td><strong>Camper Name</strong></td>
<td id="recent" onClick={() => this.renderByRecent()} className="text-center">Points in past 30 days</td>
<td id="alltime" onClick={() => this.render()} className="text-center">All time points</td>
</tr>
</thead>
<tbody>
{this.props.list.map(function(item, index) {
let url = "https://www.freecodecamp.com/" + item.username;
return (
<tr key={index}>
<td>{index}</td>
<td>
<a href={url}>
<img src={item.img} className="logo"/> {item.username}
</a>
</td>
<td className="text-center">{item.recent}</td>
<td className="text-center">{item.alltime}</td>
</tr>
);
})}
</tbody>
</table>
);
}
}
现在,首次呈现发生在页面加载时。它只是在javascript文件中调用,如下所示:
ReactDOM.render(
<LeaderTable list={campersData}/>,
document.getElementById('board'))
这个很好用。
我现在需要的是重写相同的组件,但是使用不同的数据(实际上只是使用不同的数据顺序)。
我在codepen上发布了我的原始代码,以便于调查:https://codepen.io/andriusl/pen/yxwxzg
真的是重新渲染的好图案吗?
我认为不是,如果您想用不同的数据呈现相同的组件,那么通过使用状态变量来管理该组件,就不要再使用reactdom.render
了。
或者使用一个状态变量来保存要对数据进行排序的键名,然后在创建ui的过程中检查并对数据进行排序,或者可以将props数据存储在状态变量中并修改该数据。
根据单据:
这种语法的问题是,每次呈现组件时都会创建不同的回调,因此最好在构造函数中绑定方法。
与此相关的问题.render():
const sortData = (name, data) => {
return data.sort((a, b) => b[name] - a[name]);
};
class LeaderTable extends React.Component {
constructor(){
super();
this.state = {
sortBy: ''
}
}
_renderList(){
let data = this.props.list.slice(0);
if(this.state.sortBy){
data = sortData(this.state.sortBy, data);
}
return data.map(function(item, index) {
let url = "https://www.freecodecamp.com/" + item.username;
return (
<tr key={index}>
<td>{index}</td>
<td>
<a href={url}>
<img src={item.img} className="logo"/> {item.username}
</a>
</td>
<td className="text-center">{item.recent}</td>
<td className="text-center">{item.alltime}</td>
</tr>
);
});
}
renderByRecent() {
this.setState({
sortBy: 'recent'
});
}
renderOriginalList(){
this.setState({
sortBy: ''
});
}
render() {
return (
<table className="table table-bordered">
<thead>
<tr>
<td><strong>#</strong></td>
<td><strong>Camper Name</strong></td>
<td id="recent" onClick={() => this.renderByRecent()} className="text-center">Points in past 30 days</td>
<td id="alltime" onClick={() => this.renderOriginalList()} className="text-center">All time points</td>
</tr>
</thead>
<tbody>
{this._renderList()}
</tbody>
</table>
);
}
}
问题内容: 我如何获得两个数组之间的按行比较,从而得到按行的真/假数组? 给定数据: 结果步骤1: 最终结果: 那么我如何获得阵列呢 ? PS:在此示例中,数组和 进行了排序,如果在您的解决方案中数组进行了排序很重要,也请提供信息 问题答案: 这是向量化的解决方案: 请注意,将的每行与按元素进行比较。然后,我们使用+推断每个子数组是否有所有行:
我想创建一个包含一些元素的数组,然后迭代(使用.foreach或.map)它。但每个数组元素必须具有不同的样式。例如,我有一个数组如下所示: 另外,我想在另一个组件中重用数组的一些单独元素。我怎么能那样做? (假设每个元素中的最后一个单词是一个单独的样式,例如background-color或color,) 你能帮帮我吗?请给我一个建议,我会怎么做?
编辑:最后一个问题,如何通过值而不是引用来存储它?
问题内容: 我正在练习继承。 我有两个相似的类,我想将其同化为一个数组,因此我想将Object类用作超类,因为所有内容都是Object的子类。 因此,例如,我将T类和CT类放入一个名为all的数组中,如下所示: 我跳过了声明,因为那不是我的问题。 当我希望使用循环在数组内调用函数时,我真正的问题就变成了: T和CT分别涉及的类都具有beingShot方法,该方法是公共的。 Eclipse建议将它们
我正在将某些程序集打包到 msi 包中。在执行此操作时,我要求将一些程序集放入本地文件系统以及目标计算机的 GAC 中。众所周知,在这种情况下,重复文件表将无济于事。我决定将程序集放在具有不同标识符的 CAB 文件中两次。现在,为了填充组件表,我有不同的组件标识符,但我没有用于类似程序集的不同组件 GUID。我的问题是,如果我为具有不同组件标识符(在组件表中)的条目保持GUID(因为基本上程序集是
我实际上是使用处理来检查从键盘输入的值并采取行动。现在的问题是,我想使用键盘上的数字“1”来根据IF语句执行两个不同的操作,但第二个条件似乎不起作用。请帮助我仔细阅读这段代码,因为我不知道我可能在哪里出错了