Мой таймер компонента реакции не работает - PullRequest
0 голосов
/ 17 мая 2018

Я хочу использовать компонент Header в качестве таймера часов.Я надеюсь, что моя страница рендеринга в секунду.Я последовал некоторому примеру в поиске Google.Но, не могу найти такой пример.Почему эта tick() функция не работает?В консоли нет ошибок.

Это мой первый код:

class index extends React.Component<Props, {}> {
constructor({ title }: Props) {
    super({ title });
}

render() {
    return (
        <Layout title={this.props.title}>
            <div className="header"><Header/></div>
            <div className="search-bar"><SearchBar/></div>
            <div className="Footer"><Footer/></div>
        </Layout>
    );
}
}

Второй код:

class Header extends React.Component<{}, States>{
intervalID: any;
constructor() {
    super({}, {});
    this.state = {
        date: new Date().toLocaleString(),
    } 
    this.tick = this.tick.bind(this);
}

componentDidMount() {
    this.intervalID = setInterval(() => this.tick(), 1000);
}

componentWillUnmount() {
    clearInterval(this.intervalID);
}

tick() {
    this.setState({
        date: new Date().toLocaleString(),
    })
}

render() {
    return (
        <header>
            <p>Header: {this.state.date}</p>
        </header>
    );
}
}

export default Header;

Этот код (маршрутизатор Node.js) вызываетFirst стр.App использует 'express-реакции-view' для своего механизма просмотра.

import { Request, Response }  from "express";

/**
* Get /
* Home page.
* @param req 
* @param res 
*/
export let index = (req: Request, res: Response) => {
   res.render("index", {"title": "React, Front-end"})
};

1 Ответ

0 голосов
/ 17 мая 2018

Вы выполняете рендеринг на стороне сервера (это то, что делает express-react-view), что означает, что хуки жизненного цикла ваших компонентов React не будут вызываться.

Таким образом, интервальный триггер на componentDidMount() вызываться не будет. В этой статье есть хорошее объяснение, почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...