当我尝试执行以下代码时,函数this
中renderContents
的值为undefined
。
我原以为胖箭头功能会自动绑定。这不是这种情况吗?如果没有,我如何确保将this
传递给函数renderContents
?
代码示例:
class Box extends React.Component {
renderContents = () => {
console.log(this); // undefined
return (
<div></div>
)
}
render() {
const {
someValue,
} = this.props;
return (
<div>
{someValue ? this.renderContents() : null}
</div>
);
}
}
答案 0 :(得分:1)
没有错。我刚刚这样称呼它:
ReactDOM.render((<Box someValue={true} />), document.getElementById('content'));
我得到了 这个 的价值:
所以我认为问题是,你没有正确地说,你设置 someValue ??
答案 1 :(得分:-1)
你在renderContent方法中犯了错误。您将其声明为函数,并且它没有组件的上下文。 请尝试声明这样的方法:
[DllImport("UNZDLL32.DLL", CharSet = CharSet.Auto)]
public static extern void UNZ_GETERRORTEXT(long hUnz, StringBuilder ErrorText);
// or
[DllImport("UNZDLL32.DLL", CharSet = CharSet.Auto)]
public static extern void UNZ_GETERRORTEXT(long hUnz, ref string ErrorText);`
取而代之的是:
UNZDLL32.DLL
答案 2 :(得分:-3)
您是否尝试过添加构造函数方法?
protected function create(array $data)
{
// $referred_by = User::where( 'affiliate_id', Cookie::get( 'referral' ) )->first();
// $referred_user = Cookie::get( 'referral' );
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'affiliate_id' => $this->uniqueRandomString(),
'referred_by' => Cookie::get('referral'),
]);
}
编辑:
您可以在构造函数中绑定上下文,而不是使用箭头函数:
constructor(props) {
super(props)
}
在react类中,只是隐式绑定了一些方法(render,componentDidMount,componentWillUnmount等),你必须在构造函数中手动绑定其他方法或使用箭头函数。