import React from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
var mode=['recent', 'alltime'];
var Button = React.createClass({
render(){
return <input type={this.props.type} onClick= {this.props.onClick} text={this.props.val}/>;
}
});
class Header extends React.Component {
constructor(){
super()
}
render(){
return <h2>Free Code Camp Leader board</h2>
}
}
class Leader extends React.Component{
constructor(props){
super(props)
this.state = {
users: [],
val: props.m,
}
}
componentDidMount() {
var th =this;
this.serverRequest = axios.get("https://fcctop100.herokuapp.com/api/fccusers/top/"+this.state.val).then(function(result){
console.log(result.data);
var leaders = result.data;
this.setState({
users: leaders
});
}.bind(this));
}
componentWillUnmount() {
this.serverRequest.abort();
}
render(){
return (
<div className='container'>
<div className="tbl">
<table className="table">
<thead>
<tr>
<th>Name</th>
<th>Recent </th>
<th>Alltime</th>
</tr>
</thead>
<tbody>
{this.state.users.map(function(data, index){
return (<tr key={index}><td><img src={data.img} className="img img-thumbnail" width="50"/>{data.username}</td>
<td id='recent'>{data.recent}</td>
<td id='alltime'>{data.alltime}</td></tr>)
})}
</tbody>
</table>
</div>
</div>
)
}
}
class App extends React.Component{
constructor(){
super(),
this.state={val: mode[0]},
this.update= this.update.bind(this),
this.unmount=this.unmount.bind(this)
}
unmount(){
ReactDOM.unmountComponentAtNode(document.getElementById('board'))
}
update(){
this.unmount();
this.setState({val: this.state.val ===mode[0]? mode[1] : mode[0]});
}
render(){
return (
<div>
<div className='header'>
<Header />
<button onClick={this.update} >{this.state.val==mode[0]? mode[1] : mode[0]}</button>
</div>
<div id="board">
{this.state.val === mode[0]? <Leader m= {this.state.val} /> : this.state.val ===
mode[1] ? <Leader m= {this.state.val} /> : null}
</div>
</div>
);
}
}
export default App;
有问题的部分在类App extends react.component下。我正在尝试用update方法中的状态更改重新呈现Leader组件。它会更改状态,但不会更改传递给Leader到Rerender的属性。
在leader
中,在初始呈现后,您不会使用道具m
执行任何操作。所以,它正在重新呈现,但它的状态没有改变。请记住,构造函数
只在初始呈现
之前调用一次。因此,如果希望leader
在初始render
之后响应适当的更改并相应地更新其状态,则需要使用组件生命周期方法之一。
我建议将ComponentWillReceiveProps
生命周期方法添加到Leader
组件中。这应该可以做到:
componentWillReceiveProps(nextProps) {
this.setState({ val: nextProps.m });
}
测试组件内部发生的任何简单方法都是添加console.log(this.props,this.state);
作为组件render
的第一行。
为什么会引发主线程上的网络异常?its在异步任务上 } 编辑: 完整代码: logcat:
我正在做一个项目,我的意图是运行一个玉米作业,并发送邮件给我的朋友,祝他们生日,我能够从MySQL DB获取电子邮件,并将其与当前日期进行比较,但当涉及到发送电子邮件时,我得到NullPointerException。 我确信应用程序属性没有问题,我在其他项目中也使用了它们,它们的功能正常 这是我得到以下信息的错误
我不知道我在这里有什么错误,但它不会编译。我得到的错误消息是/"fe"而没有"if"/ /not一个语句//没有"if"/ 我正在按照我作业中的样本所显示的方式来做,我仍然会遇到这个错误。请有人帮我学数学。PI。我完全迷路了。
我刚开始检查react表单。我遇到了一个问题,react在渲染中标记了我试图填充输入框标签的行。以下是我的应用程序代码: 在这一点上,我所要做的就是用名称输入框的标签为“您的名字”来呈现表单,如果没有输入名称,则让react用名称输入框的标签为“您需要输入您的名字”来重新呈现表单。 非常感谢任何援助。
我写了一个函数: 我想的是用一个“cur”来记录这两个链表“a”和“b”中的每个节点。然后这两个链表'a'和'b'移动到它的下一个节点。然后转到下一个WHILE循环。 然而,这是错误的。当我调试时,在这个第一个WHILE循环中,当它完成这个
我正在尝试用Java制作一个与OpenGL(使用LWJGL 2)的窗口。当我尝试运行时,Eclipse BuiltInclassLoader出现了ClassNotFoundException错误。 我期望输出显示一个窗口,这是真正的输出: 线程“main”java.lang.noClassDeffounder中的异常错误:org/lwjgl/lwjglexception在enginetester.