我遇到了React.js的一些问题,并且在调用setState()时没有立即设置状态.我不确定是否有更好的方法来解决这个问题,或者它是否真的只是React的一个缺点.我有两个状态变量,其中一个是基于另一个.(原始问题的小提琴:http://jsfiddle.net/kb3gN/4415/你可以在日志中看到,当你点击按钮时它没有立即设置)
setAlarmTime: function(time) {
this.setState({ alarmTime: time });
this.checkAlarm();
},
checkAlarm: function() {
this.setState({
alarmSet: this.state.alarmTime > 0 && this.state.elapsedTime < this.state.alarmTime
});
}, ...
Run Code Online (Sandbox Code Playgroud)
在调用时setAlarmTime,由于this.state.alarmTime未立即更新,因此以下调用基于先前值的checkAlarm集合因此是不正确的.alarmSetthis.state.alarmTime
我通过将调用转移checkAlarm到setStatein 的回调来解决这个问题setAlarmTime,但是必须跟踪哪个状态实际上是"正确的"并尝试将所有内容都放入回调中似乎很荒谬:
setAlarmTime: function(time) {
this.setState({ alarmTime: time }, this.checkAlarm);
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来解决这个问题?在我的代码中有一些其他地方我引用我刚设置的状态,现在我不确定何时能够真正信任状态!
谢谢
我正在尝试使用此 sqlalchemy 命令显式锁定 postgres 表:
db.engine.execute('BEGIN; LOCK TABLE database_version IN ACCESS EXCLUSIVE MODE;')
Run Code Online (Sandbox Code Playgroud)
执行此操作后,如果我进入数据库客户端并运行:
select * from pg_catalog.pg_locks;
Run Code Online (Sandbox Code Playgroud)
不存在任何 ACCESS EXCLUSIVE 锁。
如果相反,我运行第一个命令,但是从 db 客户端内部,它会按预期工作。
是否有原因试图从 sqlalchemy 获取表锁无法正常工作?
理想情况下,我希望一次只有一个进程能够查询和插入 database_version 表。
我正在尝试建立一个ngrok隧道到本地运行的网络服务器端口5000服务.我可以通过localhost:5000访问网站,但是当我在端口5000上设置一个ngrok隧道时,我得到的net::ERR_CONTENT_LENGTH_MISMATCH所有css都有错误和Chrome 46.0和Safari 9.0.1中的js资源.
从Firefox 42访问ngrok链接时,我没有收到这些错误.
有谁知道为什么会这样,我可以做些什么来解决它?
我正在运行Chrome 48.0,最近当我尝试在开发者控制台中放置断点时,有时他们会拒绝放置在某些行,而是跳转到另一行.几乎就像当你试图在一条没有意义的线上放置一个断点(比如一个支架本身),但这些只是常规线.如果我对我的代码进行了更改,那么拒绝工作的行可能会发生变化,之前工作的行可能会停止工作.
我假设这与源映射有关,但我很困惑为什么有些行正常工作,并且它之后的行不会.
我正在使用grunt-browserify与babelify和babel-preset-react,babel-preset-es2015和babel-plugin-syntax-object-rest-spread:
options: {
transform: [['babelify', {
presets: ['react', 'es2015'],
plugins: ['syntax-object-rest-spread'],
}]],
browserifyOptions: {
extensions: ['.jsx'],
paths: [absPath + '/js', absPath],
debug: true // Adds source maps to output
},
Run Code Online (Sandbox Code Playgroud)
知道可能会发生什么吗?
javascript google-chrome gruntjs source-maps grunt-browserify
我最近升级到Intellij IDEA 13.1.2并且Find Usages命令已经开始包括非代码使用,这在搜索常用单词时非常烦人/慢.我意识到你可以打开Find Usages Settings(Ctrl+ Alt+ Shift+ 7)来禁用它,但它只能在每个搜索的基础上.我想为所有搜索禁用它.
我有一个看起来像这样的设置
class Topic(db.Model):
__tablename__ = 'topic'
id = db.Column(db.Integer, primary_key=True)
parent = db.relationship(
'Topic',
secondary='parent_child_relation',
primaryjoin='Topic.id == ParentChildRelation.child_topic_id',
secondaryjoin='ParentChildRelation.parent_topic_id == Topic.id',
backref='children',
uselist=False
)
class ParentChildRelation(db.Model):
__tablename__ = 'parent_child_relation'
id = db.Column(db.Integer, primary_key=True)
child_topic_id = db.Column(db.Integer, db.ForeignKey('topic.id'), nullable=False)
parent_topic_id = db.Column(db.Integer, db.ForeignKey('topic.id'), nullable=False)
Run Code Online (Sandbox Code Playgroud)
并设置了事件来观察 ParentChildRelation 的变化
@event.listens_for(ParentChildRelation, 'after_insert')
def parent_child_relation_inserted(mapper, connection, target):
# DO STUFF HERE
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我执行以下操作时,SqlAlchemy 似乎不会触发这些事件(我正在使用 Flask SqlAlchemy):
topic = Topic(id=new_id)
new_parent = Topic.query.get(anotherId)
topic.parent = new_parent
db.session.add(topic)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
我认为应该调用事件处理程序,但after_insert没有调用处理程序。
这是 SqlAlchemy 的限制,还是我遗漏了什么?
javascript ×2
python ×2
sqlalchemy ×2
gruntjs ×1
http ×1
http-error ×1
locking ×1
ngrok ×1
postgresql ×1
reactjs ×1
source-maps ×1
tunnel ×1
webserver ×1