Facebook React 鼓励您将mutable(state)和immutable(props)状态分开:
尽量保持尽可能多的组件无状态.通过这样做,您可以将状态隔离到最合理的位置,并最大限度地减少冗余,从而更容易推断您的应用程序.
当状态改变时,您应该调用setState触发虚拟DOM diff,这将仅在需要时才会导致真正的DOM更新.
还有就是通过调用手动触发DOM更新的方式forceUpdate,但它气馁:
通常你应该尽量避免使用
forceUpdate()和只读取this.props和this.state使用render().这使您的应用程序更简单,更高效.
但是,我看到的所有React + Backbone示例都忽略了这个建议并将模型和集合存储在props并调用forceUpdate:
甚至React自己的例子也使用forceUpdate:
有没有更好的方法,它会带来什么好处?
我想知道一旦对象被重新分配,对象(在C#中)会发生什么.例:
Car c = new Car("Red Car");
c = new Car("Blue Car");
Run Code Online (Sandbox Code Playgroud)
由于引用被重用,垃圾收集器在失去引用之后是否处理/处理'Red Car'?或者是否需要采用单独的方法来处理"红色汽车"?
我主要想知道因为我将要回收一个相对较大的对象,并且需要知道在重新创建时是否还有任何应该完成的事情.
注意:我创建了一个简单的项目 - 您可以看到故事板之间
UIButton和CustomButton故事板中的切换类型如何改变GC行为.
我正试图让我的脑袋缠绕着MonoTouch垃圾收集器.
该问题类似于MT 4.0中修复的问题,但是使用了继承类型.
为了说明它,请考虑两个视图控制器,父级和子级.
子视图包含一个UIButton可以随时写入控制台的视图.
Controller的Dispose方法会引发异常,因此很难错过.
这里是子视图控制器:
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
sayHiButton.TouchUpInside += (sender, e) =>
SayHi();
}
}
void SayHi()
{
Console.WriteLine("Hi");
}
protected override void Dispose (bool disposing)
{
throw new Exception("Hey! I've just been collected.");
base.Dispose (disposing);
}
Run Code Online (Sandbox Code Playgroud)
父视图控制器只显示子控制器并设置一个计时器来关闭它并运行GC:
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
var child = (ChildViewController)Storyboard.InstantiateViewController("ChildViewController");
NSTimer.CreateScheduledTimer(2, () => {
DismissViewController(false, null);
GC.Collect();
}); …Run Code Online (Sandbox Code Playgroud) 我webpack-dev-server v1.10.1用来提升我的Redux项目,我有以下选项:
contentBase: `http://${config.HOST}:${config.PORT}`,
quiet: false,
noInfo: true,
hot: true,
inline: true,
lazy: false,
publicPath: configWebpack.output.publicPath,
headers: {"Access-Control-Allow-Origin": "*"},
stats: {colors: true}
Run Code Online (Sandbox Code Playgroud)
在JS中,我使用requestfrom superagent来生成HTTP GET调用
request
.get(config.APIHost + apiUrl)
.set('Accept', 'application/json')
.withCredentials()
.end(function (err, res) {
if (!err && res.body) {
disptach(() => {
return {
type: actionType || GET_DATA,
payload: {
response: res.body
}
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
但是我收到了CORS错误:
XMLHttpRequest cannot load http://localhost:8000/api/getContentByType?category=all. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5050' …Run Code Online (Sandbox Code Playgroud) 在Django中,如果我有一个模型类,例如
from django.db import models
class Transaction(models.Model):
...
Run Code Online (Sandbox Code Playgroud)
然后,如果我想向模型添加方法,存储例如相当复杂的过滤器,我可以添加自定义模型管理器,例如
class TransactionManager(models.Manager):
def reasonably_complex_filter(self):
return self.get_query_set().filter(...)
class Transaction(models.Model):
objects = TransactionManager()
Run Code Online (Sandbox Code Playgroud)
然后我可以这样做:
>>> Transaction.objects.reasonably_complex_filter()
Run Code Online (Sandbox Code Playgroud)
有什么办法可以添加一个可以链接到模型查询集末尾的自定义方法吗?
即添加自定义方法,以便我可以这样做:
>>> Transaction.objects.filter(...).reasonably_complex_filter()
Run Code Online (Sandbox Code Playgroud) 由于React没有任何内置的管理方法document.title,我曾经在componentDidMount路由处理程序中设置它.
但是现在我需要根据state异步提取修改标题.我开始投入分配componentDidUpdate,但我时不时地忘记将document.title作业放到某些页面中,之前的标题一直存在,直到我终于注意到它为止.
理想情况下,我想要一种以document.title声明方式表达的方式,而不必分配它.鉴于我希望能够在几个嵌套级别指定文档标题,某种"假"组件可能是最方便的:
其他要求:
<noscript>);我能用什么?
有时,当使用React库,例如react-router时,我收到此错误:
未捕获的TypeError:无法读取未定义的属性'firstChild'/~/
react-router/~/react/lib/ReactMount.js?:606
我如何解决它?
是否有一个免费提供的jQuery插件可以改变placeholder行为以匹配HTML5规范?
聚焦之前
关注焦点(Safari)

焦点不好(Chrome,Firefox)

你可以用这个简单的小提琴你的浏览器做什么.
用户代理在向其删除换行符之后,当元素的值为空字符串和/或控件未聚焦时(例如,通过将其显示在空白的未聚焦控件内并以其他方式隐藏),应向用户显示此提示.
"/或"在当前草案中是新的,所以我想这就是为什么Chrome和Firefox还不支持它.请参阅WebKit错误#73629,Chromium bug#103025.
您如何设计和实现复杂的UI交互动画?
(我不是在讨论像jQuery或UIKit这样的特定语言和库,除非它们强迫你以特定的方式思考管理相互依赖的动画,我感兴趣.)
考虑一个看似"简单"的任务,比如设计和编程iOS主屏幕.

然而,隐藏复杂性的程度令人震惊.
我注意到关于界面的一些事情:
我确信这里有更多的复杂性,我没有注意到.
在粗略的概括,为每一对(animation, user_action)在同一界面环境下,你需要决定是否有什么user_action情况发生,而animation在已经运行.
在大多数情况下,你可以
但是在动画期间可能会有几个动作,你必须决定在动画结束时丢弃哪些动作,排队哪些动作,以及是否执行所有排队动作,或者只执行最后一个动作.
如果在动画完成时某些内容排队,并且动画发生了变化,则需要确定排队的操作是否仍然有意义,或者是否需要删除.
如果这听起来太理论化,请考虑一个现实世界的例子:你如何处理用户向下拖动应用程序,等待重新排列开始,然后立即向上拖动应用程序并释放它?如何确保动画在每种可能的情况下都流畅可靠?
我发现自己甚至无法保留一半可能的情景.随着UI的表现力增加,可能状态的数量开始猛烈地违反7±2规则.
因此,我的问题如下:
你如何控制设计和实现动画的复杂性?
我既想找到解决问题的有效方法,也想找到解决问题的方法.
作为一个例子,事件和观察者被证明是大多数UI的非常有效的抽象.
但是,您能否依靠事件作为主要抽象来设计和实现类似iOS的拖放式屏幕?
代码必须多么纠结才能准确地表示UI的所有可能状态?它是一个事件处理程序添加另一个事件处理程序当一些布尔变量对于将其设置为false的函数为真时,除非在它之前运行另一个事件处理程序吗?
"你有没有听说过课程?"你可能想知道.为什么,我有,但这些类需要分享的状态太多了.
总而言之,我正在寻找与语言无关(尽管可能是语言或框架启发的)技术,用于管理顺序或同时发生的复杂的相互依赖,可取消,动画,并描述它们如何对用户操作做出反应.
(所有这一切都考虑到我不需要自己编写动画 - 也就是说,我确实可以访问像jQuery或Core Animation这样的框架,animate(styles, callback)对我而言,我可以cancel做到这一点.)
数据结构,设计模式,DSL如果有助于解决这些问题,那么它们都很好.
language-agnostic user-interface animation abstraction design-patterns
我试图测试我的传奇可以遵循的每个场景,但我无法实现我想要的行为.这很简单,我有一个HTTP请求(登录),我想通过模拟我的API方法来测试成功和失败的情况.
但是,它看起来call effect不会激活我的api功能,我还没有真正得到它是如何工作的,但我想中间件是负责调用该功能,因为我不去通过商店我的测试,我无法得到结果.
所以我的问题是,当您需要在异步调用旁边发送不同的操作(通常是成功或失败)时,如何测试您的传奇?
我找了一个例子,我发现sagas成功并失败但是失败案例从未经过测试,例如在这里的购物车示例中
SAGA.JS
export function* login(action) {
try {
const user = yield call(api.login, action);
return yield put(actions.loginSuccess(user));
} catch(e) {
yield put(actions.loginFail(e));
}
}
export default function* rootAuthenticationSagas() {
yield* takeLatest(LOGIN, login);
}
Run Code Online (Sandbox Code Playgroud)
TEST.JS
describe('login', () => {
context('When it fails', () => {
before('Stub the api', () => {
sinon.stub(api, 'login', () => {
// IT NEVER COMES HERE !
return Promise.reject({ error: 'user not found' });
});
});
it('should return …Run Code Online (Sandbox Code Playgroud) reactjs ×5
javascript ×4
react-router ×2
abstraction ×1
animation ×1
backbone.js ×1
c# ×1
cors ×1
django ×1
dom ×1
focus ×1
generator ×1
html5 ×1
new-operator ×1
object ×1
placeholder ×1
python ×1
redux ×1
redux-saga ×1
safari ×1
superagent ×1
xamarin ×1
xamarin.ios ×1