我有以下组件(radioother.jsx
):
'use strict';
//module.exports = <-- omitted in update
class RadioOther extends React.Component {
// omitted in update
// getInitialState() {
// propTypes: {
// name: React.PropTypes.string.isRequired
// }
// return {
// otherChecked: false
// }
// }
componentDidUpdate(prevProps, prevState) {
var otherRadBtn = this.refs.otherRadBtn.getDOMNode();
if (prevState.otherChecked !== otherRadBtn.checked) {
console.log('Other radio btn clicked.')
this.setState({
otherChecked: otherRadBtn.checked,
});
}
}
onRadChange(e) {
var input = e.target;
this.setState({
otherChecked: input.checked
});
}
render() {
return (
<div>
<p className="form-group radio">
<label>
<input type="radio"
ref="otherRadBtn"
onChange={this.onRadChange}
name={this.props.name}
value="other"/>
Other
</label>
{this.state.otherChecked ?
(<label className="form-inline">
Please Specify:
<input
placeholder="Please Specify"
type="text"
name="referrer_other"
/>
</label>)
:
('')
}
</p>
</div>
)
}
};
>
有人能看到错误在哪里吗?我知道这是由于DOM中的条件语句,但显然我没有正确声明它的初始值?
我应该将getInitialState设置为静态吗
如果getInitialState不正确,声明我的proptypes的合适位置在哪里?
RadioOther.propTypes = {
name: React.PropTypes.string,
other: React.PropTypes.bool,
options: React.PropTypes.array }
module.exports = RadioOther;
constructor(props) {
this.state = {
otherChecked: false,
};
}
constructor(props) {
super(props);
this.state = {
otherChecked: false,
};
}
未捕获的TypeError:无法读取未定义的属性“props”
GetInitialState
不在ES6类中使用。而是在构造函数中指定this.state
.proptypes
应该是静态类变量或分配给类,而不应该分配给组件实例。export default class RadioOther extends React.Component {
static propTypes = {
name: React.PropTypes.string.isRequired,
};
constructor(props) {
super(props);
this.state = {
otherChecked: false,
};
}
// Class property initializer. `this` will be the instance when
// the function is called.
onRadChange = () => {
...
};
...
}
请参阅React关于ES6类的文档:将函数转换为类
问题内容: 我具有以下组件(): 在使用ECMAScript6之前,一切都很好,现在出现1个错误,1个警告,并且我有一个后续问题: 错误: 未被捕获的TypeError:无法读取null的属性“ otherChecked” 警告: getInitialState是在RadioOther(一个普通的JavaScript类)上定义的。仅使用React.createClass创建的类支持此功能。您是要定
第二行提示 应该怎么写呢?
如何用普通JavaScript编写?
我在React中测试ES6语法,并编写如下组件:
如下是一个自定义Hook: 我发现定义Hook和定义普通的js函数对比,除了use开头的命名规范之外没有任何差异: 1、请问定义Hook和定义普通的js函数还有哪些区别吗? 2、自定义 Hook 可以调用其他的 React Hook,如 useState, useEffect 等。普通函数不能这样做。请问这个是如何实现这个约束的呢(普通函数不能这样使用,是运行时检查use开头的函数吗)? 3、使用
本文向大家介绍React中getInitialState方法的作用是什么?相关面试题,主要包含被问及React中getInitialState方法的作用是什么?时的应答技巧和注意事项,需要的朋友参考一下 使用es5创建组件caerteClass getInitialState(初始化state)