我在React还是很新,但是我一直在慢慢地学习,遇到了一些我坚持的事情。
我正在尝试在React中构建一个“计时器”组件,说实话,我不知道我是否做得正确(或有效)。在下面我的代码,我设置状态来返回一个对象{ currentCount: 10 }
,并已与玩弄componentDidMount
,componentWillUnmount
和render
我只能得到状态,以“倒计时”,从10到9。
问题分为两个部分:我怎么了?而且,有没有一种更有效的方法来使用setTimeout(而不是使用componentDidMount
&componentWillUnmount
)?
先感谢您。
import React from 'react';
var Clock = React.createClass({
getInitialState: function() {
return { currentCount: 10 };
},
componentDidMount: function() {
this.countdown = setInterval(this.timer, 1000);
},
componentWillUnmount: function() {
clearInterval(this.countdown);
},
timer: function() {
this.setState({ currentCount: 10 });
},
render: function() {
var displayCount = this.state.currentCount--;
return (
<section>
{displayCount}
</section>
);
}
});
module.exports = Clock;
我发现您的代码有4个问题:
setState
方法来实际更改状态让我们尝试解决该问题:
componentDidMount: function() {
var intervalId = setInterval(this.timer, 1000);
// store intervalId in the state so it can be accessed later:
this.setState({intervalId: intervalId});
},
componentWillUnmount: function() {
// use intervalId from the state to clear the interval
clearInterval(this.state.intervalId);
},
timer: function() {
// setState method is used to update the state
this.setState({ currentCount: this.state.currentCount -1 });
},
render: function() {
// You do not need to decrease the value here
return (
<section>
{this.state.currentCount}
</section>
);
}
这将导致计时器从10减少到-N。如果您希望计时器减少到0,则可以使用稍微修改的版本:
timer: function() {
var newCount = this.state.currentCount - 1;
if(newCount >= 0) {
this.setState({ currentCount: newCount });
} else {
clearInterval(this.state.intervalId);
}
},
React是一个声明式、基于组件的javascript库,可以非常轻松地创建用户交互界面。为你应用的每一个状态设计简洁的视图,在数据改变时React也可以高效地更新渲染界面。 如果你还没接触过React的话,建议你先阅读Why did we build React?和React 快速入门两篇文章,当然我也建议你能学学Babel和Webpack的相关知识,这些知识点结合在一起可以非常完美的帮助你进行
问题内容: 在TypeScript React Application中使用有意义吗?还是“皮带和吊带”的情况? 由于组件类是使用类型参数声明的: 有添加任何真正的好处吗 类定义? 问题答案: 将两个组件道具同时保持为TypeScript类型通常没有太大价值。 在某些情况下,这样做很有用: 发布将由普通JavaScript使用的包,例如组件库。 接受并传递外部输入,例如API调用的结果。 使用库中
第六篇JSX在React-Native中的应用 一、JSX概述 你一定疑问为什么要用JSX?其实这不是必需,而是建议。只是因为React是作为MVC中的V,是为UI而生,所以,React-Native使用JSX更能像HTML样表达树形结构,其实HTML的超类就是XML,React-Native将这个带到了解放前,不可否认的是JSX相比节省了很多的代码。JSX不是什么新奇的东西,JSX只是对Java
和 Flux 类似,Redux 也是需要注册一个回调函数 store.subscribe(listener) 来获取 State 的更新,然后我们要在 listener 里面调用 setState() 来更新 React 组件。 Redux 官方提供了 react-redux 来简化 React 和 Redux 之间的绑定,不再需要像 Flux 那样手动注册/解绑回调函数。 接下来看一下是怎么做到
问题内容: 我有一个使用两个第三方服务的React应用程序。该应用已开始使用。 这两个服务都需要一个API密钥。 一键通过脚本标签提供,如下所示: 另一个API密钥用于请求中。我将实际密钥存储在一个常量中,并用它来构成请求。像这样: Google 在处理API密钥方面的最佳做法提示是: 不要将API密钥直接嵌入代码中 这使我想到了第一个问题: 1.如何在中使用变量? 在我的文件中,我有两个看起来像
我用React Native开发了一个应用程序,我也把它放到了谷歌商店。但一些设备仍然存在一个问题。当其他设备正常工作时,某些设备无法连接到服务器。 我已经生成了多个APK并上传到商店。问题依然存在。我已经把代码放在了android/app/build中。gradle和我想知道所有的设备类型都包括在内。我也应该生成通用APK吗?