首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应JS时钟复合

反应JS时钟复合
EN

Stack Overflow用户
提问于 2017-04-20 18:44:13
回答 1查看 82关注 0票数 1

我想用反应元件做时钟。我想要的每个值都来自不同的组件。我拿到密码了:

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';

class ClockTimeHour extends React.Component{
  render(){
    return <h1>{this.props.date.getHours()}</h1>
  }
}

class ClockTimeMinute extends React.Component{
  render(){
    return <h1>{this.props.date.getMinutes()}</h1>
  }
}

class ClockTimeSecond extends React.Component{
  render(){
    return <h1>{this.props.date.getSeconds()}</h1>
  }
}

class ClockDateYear extends React.Component{
  render(){
    return <h1>{this.props.date.getFullYear()}</h1>
  }
}

class ClockDateMonth extends React.Component{
  render(){
    return <h1>{this.props.date.getMonth()}</h1>
  }
}

class ClockDateDay extends React.Component{    
  render(){
    return <h1>{this.props.date.getDate()}</h1>
  }
}

class ClockTime extends React.Component{

  render(){
    return (
      <div>
        <ClockTimeHour date={this.state.now}/>
        <ClockTimeMinute date={this.state.now}/>
        <ClockTimeSecond date={this.state.now}/>
      </div>
    );
  }
}

class ClockDate extends React.Component{
  render(){
    return (
      <div>
        <ClockDateYear date={this.state.now}/>
        <ClockDateMonth date={this.state.now}/>
        <ClockDateDay date={this.state.now}/>
      </div>
    );
  }
}

class Clock extends React.Component{
  constructor(props){
    super(props)
    this.state={
      now: new Date()
    }
  }

  componentDidMount() {
    this.timerId=setInterval(()=>{
      this.setState({ now : new Date() });
    },1000);
  }

  render(){
    return (
      <div>
        <ClockTime date={this.state.now}/>
        <ClockDate date={this.state.now}/>
      </div>
    );
  }
}

document.addEventListener('DOMContentLoaded', function(){
    ReactDOM.render(
        <Clock/>,
        document.getElementById('app')
    );
});

当我运行它时,我得到了: Uncaught :无法读取ClockTime.render上空的属性'now‘

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-20 19:02:56

您没有为您所提到的组件设置状态,但您正在将其作为date <ClockTime date={this.state.now}/>传递给它,因此,我假设您可能希望从以下位置进行更改:

代码语言:javascript
复制
class ClockTime extends React.Component{
  render(){
    return <div>
    <ClockTimeHour date={this.state.now}/>
    <ClockTimeMinute date={this.state.now}/>
    <ClockTimeSecond date={this.state.now}/>
    </div>
  }
}

至:

代码语言:javascript
复制
class ClockTime extends React.Component{
  render(){
    return (
      <div>
        <ClockTimeHour date={this.props.date}/>
        <ClockTimeMinute date={this.props.date}/>
        <ClockTimeSecond date={this.props.date}/>
      </div>
    );
  }
}

您可以找到这里的一个工作示例,使用您的代码,但应用我已经讨论过的更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43527491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档