- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试从子组件修改基本组件的变量时。我发现我只能通过严格执行以下操作来做到这一点:
1:基础组件必须定义了一个事件处理程序,严格来说是一个变量onVariableChange
事件处理程序,并将其分配给本地函数
2:基础组件必须有自定义属性variable
将与上述 onVariableChange
链接功能
3:子组件现在可以调用this.props.onVariableChange()
进行适当的修改(从子到基)
在基本声明中:changeFn(){ //do Something }
基地的渲染:
return <div> <Child variable={this.stateSomeVar} onVariableChange={this.changeFn} />
this.props.onVarChange();
childFnAnsweredByBase(){
...
}
render(){
return <Child callFromChildFn={this.childFnAnsweredByBase} />
}
最佳答案
When I try to modify a base component's variable from a child component. I find that I can only do it by strictly doing the following:
1: Base component must have defined an event handler, strictly a variable onVariableChange event handler, and have it assigned to a local function
2: Base component must have custom attribute variable that will be linked with the above onVariableChange function
this.props.onVarChange();
Why is that? Why can't we just call the custom function from child to base directly without the use of custom property?
props
, 那么你应该这样使用,因为这个函数是 child 的
props
的一部分.
const Child = (props) => (
<div>
<input onChange={props.callFromChildFn} />
</div>
);
class App extends React.Component {
state = {
someVar: "initial value",
}
childFnAnsweredByBase = event =>
this.setState({ someVar: event.target.value })
render() {
return (
<div>
<Child callFromChildFn={this.childFnAnsweredByBase} />
<p>someVar is: {this.state.someVar}</p>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
Am I incorrectly understanding the React's documentation?
const Child = (props) => {
const { someNum, multiplyTheNumberBy, by } = props;
const handleMultiply = () => {
const newNum = someNum * by;
multiplyTheNumberBy( newNum );
}
return (
<div>
<button onClick={handleMultiply}>Multiply Number By {by}</button>
</div>
);
}
class App extends React.Component {
state = {
someNum: 1,
}
multiplyTheNumberBy = valueFromChild =>
this.setState({ someNum: valueFromChild })
render() {
return (
<div>
<Child
multiplyTheNumberBy={this.multiplyTheNumberBy}
someNum={this.state.someNum}
by={10}
/>
<Child
multiplyTheNumberBy={this.multiplyTheNumberBy}
someNum={this.state.someNum}
by={100}
/>
<p>someNum is: {this.state.someNum}</p>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
Also, why do we have to assign const localFn = props.CallFromChildFn ? why can't we just invoke this.props.CallFromChildFn directly? Or is it supposed to be props.CallFromChildFn?
this
在类组件中,因此对于功能组件,没有必要。我们可以使用我们的 Prop 作为
props.something
而不是
this.props.something
.
this
为了正确使用它,在每次渲染中都会重新创建此功能。这就是为什么使用对这个函数的引用而不是立即以某种方式调用它们或使用绑定(bind)。
<input onChange={props.callFromChildFn} />
<input onChange={e => props.callFromChildFn( e )} />
onChange
的回调。作为箭头函数。它接受一个事件并将其传递给我们的
callFromChildFn
功能。这也有效。但是,由于我们在这里使用了箭头函数,因此在每次渲染中都会创建此函数。
const { someNum, multiplyTheNumberBy, by } = props;
const handleMultiply = () => {
const newNum = someNum * by;
multiplyTheNumberBy( newNum );
}
return (
<div>
<button onClick={handleMultiply}>Multiply Number By {by}</button>
</div>
multiplyTheNumber
从我的 Prop 中获取函数并将计算值传递给它。但同样,我会使用这样的东西:
const { someNum, multiplyTheNumberBy, by } = props;
return (
<div>
<button onClick={() => multiplyTheNumberBy(someNum * by)}>Multiply Number By {by}</button>
</div>
onClick
回调函数并使用我们的
multiplyTheNumberBy
从我们的 Prop 中直接进行乘法运算。但是,这个函数也在每次渲染中重新创建。
关于javascript - 提升状态向上 : Communicating from child component and upward,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51904586/
我还不擅长 Android 动画,但我需要在我的新项目中实现一个弹跳动画。以下是我用来完成它的动画文件。 此动画将使要设置动画的对象向下弹跳。我该怎么做才能让它向上反弹? (
我正在编写一个递归函数来查找是否存在从根到叶子的路径总和达到某个数字(用户输入总和)。每次我进入新的递归调用时,我都会使用 node->data 的值来增加 current_sum 的值。 Curre
问题是: 我需要知道是否有办法在 上做一个向上的行跨度表单上的元素。 我正在读取数据库中的一些行,我需要将它们放入 html 表中。我正在做类似的事情: echo ""; while($result
如果您有一个非常非常大的 JPG 和一个嵌入 HTML 的 BMP 并将其加载到 Firefox 中,您会注意到 JPG 将“向下”加载(从左到右绘制,然后向下)并且 BMP 将加载“向上”(从右向左
当我尝试从子组件修改基本组件的变量时。我发现我只能通过严格执行以下操作来做到这一点: 1:基础组件必须定义了一个事件处理程序,严格来说是一个变量onVariableChange事件处理程序,并将其分配
一个潜在客户有一个网站,其页面是在 Dreamweaver(tm) 中完成的。我没有 Dreamweaver(tm),也从未使用过它,过去曾在使用它创建的页面上看到一些意大利面条 (html) 代码。
我对一些动态选择元素使用 Harvest Chosen,但我遇到了一个问题,如果选择元素靠近页面底部,选择列表会被 chop 。包含的 div 设置为溢出:隐藏,并且出于某种原因将其更改为溢出:可见导
向后二进制兼容性(或向下兼容性)- 使用旧版本库 API 构建的客户端能够在新版本 (wiki ) 上运行。 向上二进制兼容性(或向前兼容性)- 使用新版本库 API 构建的客户端能够在旧版本 (wi
我如何在 Swift 中使用加速度计/陀螺仪才能查明是否... A)将 iPhone 握在用户脸部正前方,即“向上”握持或 B) iPhone 已放在 table 上,即显示屏朝上。 C) 当它被放在
我想使用 mysql 实现一个时态数据库。我发现 BerekelyDB 引擎不支持当前的 MySQL 版本。我想存储数据并查询历史记录。 (不想删除任何数据)。例如,假设 table 上小 Actor
我必须如何在 objective-c 中使用加速度计/陀螺仪才能确定是否... A) iPhone 刚好放在用户面前,即“向上”或 B) 例如将 iPhone 放在 table 上,即显示屏朝上。 最
我有一个显示下拉列表的方法。它在 IE 11 中的行为与其他浏览器不同。
我正在使用 xamarin 表单。我用xaml设计了一个登录表单页面。我想在键盘出现时向上移动登录表单 View ,以便在平台 Android 和 IOS 上都可以看到文本字段和登录按钮。如何计算键盘
我的要求是固定宽度和高度的多个相邻内容可编辑 div(在溢出时滚动,因此最大高度)。 http://jsfiddle.net/3gut98sw/4/ 问题:溢出后,如果您在 div 内的书面文本之间按
这个问题在这里已经有了答案: Why is this inline-block element pushed downward? (8 个答案) 关闭去年。 我有以下 HTML: abc
我有一个外部组件(蓝绿色),其中包含一些我自己的 flexbox 工具栏ui-button纽扣。和一个内部组件,主要在棕色区域做它的事情(如你所料)。 但是,根据内部组件(有几个来回切换的组件),必须
我正在创建一款类似于 Doodle Jump 的游戏,我的玩家在得分的同时从物体上弹起并向上移动。 如何使 Y 轴无限向上移动并生成相同的对象,但随着玩家向上移动而处于随机位置? 我没有任何相关代码,
有人可以发布一个示例代码,说明我如何让我的游戏屏幕在我的玩家节点“跳跃”到 y 轴时向上移动。和涂鸦跳跃一样吗?目前它显然只是直接跳出屏幕顶部。 使我的“平台”节点从父节点中删除,然后在我向上移动屏幕
我正在尝试使用 XCode 7 的 UI 测试功能来运行可以遍历整个 TableView 层次结构的自动化测试。 (我正在使用迭代加深的深度优先搜索。)在每个屏幕中,我让 ui 测试器依次点击每个单元
我是一名优秀的程序员,十分优秀!