我知道这个问题已经被问了好几次,但大多数时候,解决办法是在父母处理这个问题,因为责任流程只是下降.但是,有时,您需要从其中一个方法中删除一个组件.我知道我不能修改它的道具,如果我开始添加布尔值作为状态,它将开始对一个简单的组件非常混乱.这是我想要实现的:一个小的错误框组件,用"x"来解除它.通过其道具接收错误将显示它但我想要一种方法从它自己的代码关闭它.
class ErrorBoxComponent extends React.Component {
dismiss() {
// What should I put here ?
}
render() {
if (!this.props.error) {
return null;
}
return (
<div data-alert className="alert-box error-box">
{this.props.error}
<a href="#" className="close" onClick={this.dismiss.bind(this)}>×</a>
</div>
);
}
}
export default ErrorBoxComponent;
Run Code Online (Sandbox Code Playgroud)
我会在父组件中使用它:
<ErrorBox error={this.state.error}/>
Run Code Online (Sandbox Code Playgroud)
在这节 我应该放什么?,我已经尝试过了:
ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(this).parentNode);
这会在控制台中抛出一个很好的错误:
警告:unmountComponentAtNode():您尝试卸载的节点由React呈现,并且不是顶级容器.相反,让父组件更新其状态并重新呈现以删除此组件.
我应该在ErrorBox状态下复制传入的道具,并仅在内部操纵它吗?
这可能需要一秒钟来解释所以请耐心等待:
我正在开展一个工作项目,要求我提供谷歌分析数据.我最初是在这个链接之后做的,所以在安装了API客户端pip install --upgrade google-api-python-client
并设置了类似的东西后client_secrets.json
,它需要安装gflags才能执行run()
语句.(即credentials = run(FLOW, storage)
)
现在,我收到错误消息安装gflags或更好地使用run_flow()
(确切的错误消息是这样):
NotImplementedError:必须安装gflags库才能使用tools.run().请安装gflags或最好切换到使用tools.run_flow().
我最初使用gflags(几个月前),但它与我们的框架(金字塔)不兼容,所以我们将其删除,直到我们弄清楚问题是什么.之所以最好从gflags切换到run_flow()
因为gflags已被弃用,所以我不想像我一样使用它.我现在要做的就是切换到使用run_flow()
这个问题是run_flow()
需要将命令行参数发送给它,而这不是命令行应用程序.我找到了一些有用的文档,但我仍然坚持为run_flow()
函数构建标志.
在展示代码之前还有一件事需要解释.
run_flow()
有三个参数(文档在这里).它就像流程和存储一样run()
,但它也需要一个标志对象.gflags库构建了一个ArgumentParser
在oauth2client
执行方法中使用的标志对象.
一些有助于构建argumentParser
对象的其他链接:
第二个链接非常有助于了解它是如何执行的,所以现在当我尝试做类似的事情时,sys.argv
拉入我运行aka的虚拟环境的位置pserve
并拉入我的.ini
文件(它将我的机器的凭据存储到运行虚拟环境).但这引发了一个错误,因为它期待别的东西,这就是我被困住的地方.
run_flow()
flags = parser.parse_args(argv[1:])
检索正确的信息(我不知道应该是什么样的正确信息)码:
CLIENT_SECRETS = client_file.uri
MISSING_CLIENT_SECRETS_MESSAGE = '%s is missing' % CLIENT_SECRETS …
Run Code Online (Sandbox Code Playgroud) python google-analytics google-analytics-api oauth2client google-api-python-client
我知道有一些相关的帖子,但我的情况有点不同,我想得到一些帮助.
我需要从数据库中提取一些数据,这些数据是白天的累积交互计数.目前这就是我所拥有的
SELECT
e.Date AS e_date,
count(e.ID) AS num_interactions
FROM example AS e
JOIN example e1 ON e1.Date <= e.Date
GROUP BY e.Date;
Run Code Online (Sandbox Code Playgroud)
这个输出接近我想要的但不完全是我需要的.我遇到的问题是日期存储在交互发生的小时和秒之间,因此group by不会将日期分组在一起.
这就是输出的样子.http://screencast.com/t/N1KFNFyil 12-23 theres 5交互但由于时间戳不同而没有分组.所以我需要找到一种方法来忽略时间戳,只看一天.
如果我尝试GROUP BY DAY(e.Date)
它只在一天之前对数据进行分组(即任何月份1日发生的所有事情都被分成一行)并且输出不是我想要的那样http://screencast.com/t/HN6DH3GV63M
GROUP BY DAY(e.Date), MONTH(e.Date)
将月份和月份的日期分开,但计数结束了.
我根本不是MySQL专家所以我对我所缺少的东西感到困惑
我很好奇EXISTS()
应该如何执行更快IN()
.
当比尔卡温提出一个好点时,我正在回答一个问题.当你使用EXISTS()
它时使用相关子查询(依赖子查询)而IN()只使用子查询.
EXPLAIN显示EXISTS
并且NOT EXISTS
都使用依赖子查询并且IN / NOT IN
都只使用子查询..所以我很好奇相关子查询如何比子查询更快?
我之前使用过EXISTS,它的执行速度比IN快,这就是为什么我很困惑.
这是一个带有解释的SQLFIDDLE
EXPLAIN SELECT COUNT(t1.table1_id)
FROM table1 t1
WHERE EXISTS
( SELECT 1
FROM table2 t2
WHERE t2.table1_id <=> t1.table1_id
);
+-------+-----------------------+-----------+-------+---------------+-----------+--------+--------------------------+--------+------------------------------+
| ID | SELECT_TYPE | TABLE | TYPE | POSSIBLE_KEYS | KEY |KEY_LEN | REF | ROWS | EXTRA |
+-------+-----------------------+-----------+-------+---------------+-----------+--------+--------------------------+--------+------------------------------+
| 1 | PRIMARY | t1 | index | (null) | PRIMARY | 4 | …
Run Code Online (Sandbox Code Playgroud) 我有一个下拉列表,可以满足我的需求.我唯一的问题是出于所有意图和目的,我不能为下拉列表提供排序列表,但需要在客户端按字母顺序排序.我似乎无法找到任何与在所选插件中按字母顺序重新排列标记相关的内容.好奇,如果有人必须这样做或可以指向我正确的方向.示例代码将是:
$("#my-dropdown").chosen({no_results_text: "No results matched"});
Run Code Online (Sandbox Code Playgroud)
只是想知道是否有一个选项来组织它之前我自己在javascript中订购它.提前致谢
我正在尝试根据用户输入创建动态搜索查询.
现在我已经完成了我的研究,并且我发现了多种方法.但它们都不起作用,如果它们起作用,它们远非实用.
目前我正在创建一个这样的查询:
SELECT *
FROM assignments
WHERE (id = $id OR id = '')
AND (field1 = $field1 OR field1 = '')
Run Code Online (Sandbox Code Playgroud)
此查询有效,但仅在您填写所有字段时才有效.
我从stackoverflow文章中得到了这个,我找不到了,说:
如果用户填写了输入字段,它将检查第一个规则"id = $ input",如果用户没有指定任何输入,它将检查"id =''",当它检查时,它将回报一切.因为它逃脱了空搜索规则.
但正如你可能已经知道的那样,它不起作用..
你怎么建议我接近这个?
我一直在尝试调整样式和元素的渲染顺序,以使Android和iOS的行为相同。做了大量研究,当前的答案似乎无法解决问题。
问题是此确切代码可在iOS上使用,但不能在Android设备上使用。
class Dropdown extends React.Component {
constructor() {
super()
this.state = {
open: false,
selected: undefined,
}
}
handleSelectPress = () => {
this.setState({open: !this.state.open});
}
handleOptionPress = (item) => {
this.setState({selected: item, open: !this.state.open});
this.props.onSelectOption(item);
}
render () {
const { selected = {}, open } = this.state
const { placeholder = '', options = [] } = this.props
return (
<Select
onPress={this.handleSelectPress}
value={selected.name || placeholder}
open={open}
options={options} …
Run Code Online (Sandbox Code Playgroud) 嗨我不久前切换到ECMAScript-6 javascript语法,我喜欢它!我注意到并且无法找到确定答案的一件事是在导入时使用嵌套的破坏语法.我的意思是这样的......
可以说我有一个看起来像这样的文件.
export const SomeUtils = _.bindAll({ //lodash _
someFunc1(params){
// .... stuff here
},
someFunc2(params){
// .... stuff here
},
someFunc3(params){
// .... stuff here
}
});
// ... many more of these
Run Code Online (Sandbox Code Playgroud)
我一直在做这样的事情以获得特定的功能
import {Utils} from '../some/path/to/utils';
var {someFunc2} = Utils;
Run Code Online (Sandbox Code Playgroud)
为了达到目的..有没有办法进行单行导入someFunc2
?就像你如何用括号做嵌套对象销毁赋值?(阿卡:){Utils: [{someFunc2}]}
?
我曾经这样做,var someFunc2 = require('../some/path/to/utils').someFunc2;
但我似乎无法弄清楚如何使用import语句
我在React Contact List组件中有一个方法,该组件将返回另一个组件。我已经开始工作了,但是很好奇是否有更好的方法来构造我使用密钥的方式。
具体来说-我在下面的方法中询问这一行代码(数据被硬编码为示例入门):
return <ShortContact contact={contact} key={contact.id}/>
Run Code Online (Sandbox Code Playgroud)
这是上下文中的代码:
_getContacts() {
let contactList = [
{
id: 1,
fName: "aaa",
lName: "aaaaa",
imgUrl: "http://brainstorminonline.com/wp-content/uploads/2011/12/blah.jpg",
email: "aaa@aaaa.com",
phone: "999999999999"
},
{
id: 2,
fName: "bbbbb",
lName: "bbbbbbb",
imgUrl: "https://media.licdn.com/mpr/mpr/shrinknp_200_200/bbb.jpg",
email: "bbb@bbb-bbb.com",
phone: "888888888888"
},
{
id: 3,
fName: "Number",
lName: "Three",
imgUrl: "http://3.bp.blogspot.com/-iYgp2G1mD4o/TssPyGjJ4bI/AAAAAAAAGl0/UoweTTF1-3U/s1600/Number+3+Coloring+Pages+14.gif",
email: "three@ccccc.com",
phone: "333-333-3333"
}
];
return contactList.map((contact) => {
"use strict";
return <ShortContact contact={contact} key={contact.id}/>
});
}
Run Code Online (Sandbox Code Playgroud)
ShortContact组件渲染:
class ShortContact extends React.Component {
render() {
return ( …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了有关setState的ReactJS文档.具体来说,这一行:
永远不要直接改变this.state,因为之后调用setState()可能会替换你所做的突变.把this.state看作是不可变的.
但是在我的代码中,我做了这样的事情:
var x = this.state.x;
x.y.z.push("foo"); // z is a list
this.setState({x:x});
Run Code Online (Sandbox Code Playgroud)
此代码似乎正常工作并正确更新状态.但根据文件,我违反了规则.这种方法有什么问题?有性能问题吗?比赛条件?我会被Facebook开发团队骂?理想情况下,我想避免不可变性助手和所有其他疯狂,并保持简单.
我有一个created_at时间戳字段,我需要通过并更新每个记录并从中减去4个小时.
2014-08-20 18:00:00
会成为 2014-08-20 14:00:00
2014-08-21 03:00:00
会成为 2014-08-20 23:00:00
mysql ×4
reactjs ×4
javascript ×2
sql ×2
arrays ×1
date ×1
ecmascript-6 ×1
group-by ×1
key ×1
mysqli ×1
oauth2client ×1
php ×1
python ×1
react-native ×1
search ×1
unmount ×1