我开始学习React/Redux并偶然发现了一些可能是一个非常基本的问题.以下是我的应用程序的片段,为简单起见删除了一些代码.
我的状态由一系列默认为空的站点描述.LOAD_SITES每当用户分页到不同的页面时,后来的reducer将有动作加载不同的站点集,但是现在它什么都不做.React从渲染开始PublishedSitesPage,然后渲染然后渲染PublishedSitesBox,然后循环数据并渲染单个网站.
我想要做的是让它使用默认的空数组渲染所有内容,同时启动"从服务器加载站点"的承诺,一旦它结算,就会调度LOAD_SITES操作.拨打这个电话的最佳方式是什么?我在考虑PublishedSitesBox或者也许是构造函数componentDidMount.但不确定这是否可行 - 我担心的是,我会以这种方式创建一个无限循环,以保持重新渲染.我想我可以通过在"haveRequestedInitialData"的行中设置一些其他状态参数来以某种方式阻止这种无限循环.我的另一个想法是在做完之后立即做出这个承诺ReactDOM.render().什么是最好,最干净的方法?
export default function sites(state = [], action) {
switch (action.type) {
default:
return state;
}
}
...
const publishedSitesPageReducer = combineReducers({
sites
});
ReactDOM.render(
<Provider store={createStore(publishedSitesPageReducer)}>
<PublishedSitesPage />
</Provider>,
this.$view.find('.js-published-sites-result-target')[0]
);
...
export default function PublishedSitesPage() {
return (
<PublishedSitesBox/>
);
}
...
function mapStateToProps(state) {
return { sites: state.sites };
}
const PublishedSitesBox = connect(mapStateToProps)(({sites}) => {
// render sites …Run Code Online (Sandbox Code Playgroud) 如果您执行此查询
SELECT 'test-a1' AS name1, 'test-a2' AS name2
Run Code Online (Sandbox Code Playgroud)
结果将是一行选择,其中两列具有以下值:
test-a1, test-a2
Run Code Online (Sandbox Code Playgroud)
如何修改上述查询以选择多行,例如
test-a1, test-a2
test-b1, test-b2
test-c1, test-c2
Run Code Online (Sandbox Code Playgroud)
我知道如何用UNION做到这一点,但我觉得有一种更简单的方法可以做到这一点.
PS.很抱歉这样一个基本问题,谷歌很难.
我一直在研究和测试如何在MySQL中进行快速随机选择.在这个过程中,我遇到了一些意想不到的结果,现在我不完全确定我知道ORDER BY RAND()是如何工作的.
我一直认为,当你在表上执行ORDER BY RAND()时,MySQL会在表中添加一个新列,其中填充了随机值,然后按该列对数据进行排序,然后例如,您获取上面随机获得的值.我做了大量的谷歌搜索和测试,最后发现Jay在他的博客中提供的查询确实是最快的解决方案:
SELECT * FROM Table T JOIN (SELECT CEIL(MAX(ID)*RAND()) AS ID FROM Table) AS x ON T.ID >= x.ID LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
虽然常见的ORDER BY RAND()在我的测试表上需要30-40秒,但他的查询在0.1秒内完成了工作.他解释了这在博客中是如何运作的,所以我将跳过这个,最后转向奇怪的事情.
我的表是用PRIMARY KEY公用表id以及其它类似的非索引的东西username,age等这里的东西我竭力解释
SELECT * FROM table ORDER BY RAND() LIMIT 1; /*30-40 seconds*/
SELECT id FROM table ORDER BY RAND() LIMIT 1; /*0.25 seconds*/
SELECT id, username FROM table ORDER BY RAND() LIMIT 1; /*90 seconds*/
Run Code Online (Sandbox Code Playgroud)
我有点期待看到所有三个查询大致相同的时间,因为我总是在单个列上排序.但出于某种原因,这并没有发生.如果您对此有任何想法,请告诉我.我有一个项目,我需要快速ORDER BY RAND(),我个人更喜欢使用
SELECT id FROM table …Run Code Online (Sandbox Code Playgroud) 我有一定数量的div框,它们都有相同的类名.我试图向他们申请一些东西,但没有运气.我到目前为止构建的代码是
$(document).ready(function(){
elements = $('div.easy_editor');
elements.each(function() { $(this).css("border","9px solid red"); });
//elements[0].css("border","9px solid red");
});
Run Code Online (Sandbox Code Playgroud)
你能告诉我我做错了吗?
我用谷歌搜索并尝试了很多方法来做到这一点,但到目前为止我都无法工作.我正在寻找的很简单:我希望能够判断下拉列表是否具有选定值.问题是selectedIndex,:selected,val()等确实返回以下情况的结果:
<select>
<option value="123">123</option>
<option value="234">234</option>
</select>
Run Code Online (Sandbox Code Playgroud)
显然,浏览器将显示此下拉列表,并且选择了123选项,但只会选择它,因为没有其他选项,实际上这个下拉列表没有选定的值,因为没有"selected"属性.所以基本上我试图找到如何区分上述下拉列表
<select>
<option selected value="123">123</option>
<option value="234">234</option>
</select>
Run Code Online (Sandbox Code Playgroud) 我们即将开始一个新项目,我们想要使用Yii.在阅读Yii网站后,我发现Yii 2 beta的发布日期已经设定为2014年初,并且由github判断,该里程碑准备好了94%.
选择Yii版本时,在这种情况下,我们最好的选择是什么?如果我们使用稳定的Yii 1,以后是否很容易将该代码更新为Yii 2.0,或者它将是一个完全重写还是一些糟糕的黑客攻击?或者如果我们使用Yii 2.0 alpha,那么更新会相对容易吗?alpha的不稳定性是可以的,我们无论如何都可能会在beta发布的时候处理基本的事情,例如身份验证,注册等?最后是使用最新的github提交(这是一个94%的完整测试版)一个好主意,还是处于半功能"开发"状态,可能根本不起作用?
Yii扩展程序的兼容性如何?如果我们选择Yii 2,我们是否会受限于相对较少的Yii 2扩展选择?
我刚刚发现git-subtree工具,前段时间成为主要git repo的一部分 https://github.com/apenwarr/git-subtree/
但是我不完全理解这个工具提供了什么功能,而不是现有的"git read-tree"+"git merge -s subtree".是git子树的唯一选择 - 使得结果提交历史看起来更好还是它具有我忽略的更多功能?
我遇到了一个非常奇怪的问题,我不知道如何进一步调试.我有一个NGINX + PHP5-FPM + APC Amazon Ubuntu实例,并且安装了一个网站,这是一个复杂的PHP框架.在尝试调试问题时,我减少了流程:包含了很多大类,创建了主对象,启动了会话,从memcached中检索了配置数组,从memcached中检索了XML文件,HTML包含模板,输出发送到客户端.
然后我使用http_load工具将网站置于每秒20个请求的负载下:http_load -timeout 10 -rate 20 -fetches 10000 ./urls.txt
接下来发生的事情很奇怪.top显示了一堆产生了几个CPU的php5-fpm进程,一切运行顺畅,如下所示:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28440 www-data 20 0 67352 10m 5372 S 4.3 1.8 0:20.33 php5-fpm
28431 www-data 20 0 67608 10m 5304 S 3.3 1.8 0:16.77 php5-fpm
28444 www-data 20 0 67352 10m 5372 S 3.3 1.8 0:17.17 php5-fpm
28445 www-data 20 0 67352 10m 5372 S 3.0 1.8 0:16.83 …Run Code Online (Sandbox Code Playgroud) 我正在构建一个使用FB connect的Web应用程序(PHP).我在facebook提供的PHP库的帮助下成功注册/登录用户.我也可以使用此代码发布到墙上
Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;
$facebook = new Facebook(array(
'appId' => $fb_key,
'secret' => $fb_secret,
'cookie' => true, // enable optional cookie support
));
$session = $facebook->getSession();
if ($session)
{
$facebook->api('/me/feed', 'POST', array('message'=>$message, 'link'=>$link['href'], 'name'=>$link['text']));
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我手动转到浏览器的cookie管理器并删除存储FB会话的cookie,则代码不起作用.我唯一拥有的是用户的FB ID,我存储在DB中.即使FB会话丢失,有没有办法发布到用户的墙上?将用户的FB访问令牌存储在DB中以便稍后发布到墙上或访问令牌是否相对短暂是否有意义?
以下是我的应用程序中可能出现的一个示例情况:用户单击fb按钮,授权我的应用程序,重定向回我的网站,我根据FB提供的数据自动创建帐户,同时我存储用户的FB ID以便我可以签名在这个用户以后.现在他浏览网站,输入一些信息,这些信息会发布到他的墙上.到目前为止一切都很好,因为用户的浏览器保存了FB创建的cookie.现在用户离开了站点并联系了站点管理员.管理员打开自己的浏览器,转到管理界面并代表此用户发布内容.现在,拥有该用户的FB ID并假设用户尚未撤销权限,我仍然可以将其发布到他的墙上吗?
我正在构建我的第一个React-Redux应用程序,在很多情况下,我可以选择执行<PaginationBox perPage={perPage} />或执行<PaginationBox />,然后执行
function mapStateToProps({pagination: {page}}) {
return {
pageNumber: page + 1
};
}
Run Code Online (Sandbox Code Playgroud)
使用这种或那种方式的含义是什么?我应该何时优先选择其中一种?
有关如何拾取道具的既定最佳实践吗?每次我mapStateToProps在一些深度嵌套的组件中使用时,我感觉有点不好,因为感觉组件被耦合到特定页面/应用程序的状态.