p/react:使用 "tag" 语法时无法访问状态
p/react: cannot access state when using "tag" syntax
我正在自学 p/react,我不确定为什么我不能访问组件的状态。
我有一个组件:
const AView = (state,props) => (
<div>
<p>{state.a}</p>
<B />
</div>
)
class A extends Component {
constructor() {
super();
this.state = { a: 1 };
}
render(props,state) {
return <AView a={state.a}/>
}
}
const BView = (state,props) => (
<div>
<p>{state.b}</p>
</div>
)
class B extends Component {
constructor() {
super();
this.state = { b: 2 };
}
render(props,state) {
return <BView b={state.b}/>
}
}
这会呈现具有预期状态 1
的组件 A
,但它不会呈现具有 2
状态的组件 B
(组件 B
只是使用空 <p>
标签渲染)。
但是,如果我使用替代语法,我可以使用状态 2
:
呈现组件 B
class B extends Component {
...
render(props,state) {
return BView(props,state);
}
}
我是不是在概念上遗漏了什么,或者只是有一些我不知道的语法?我试过谷歌搜索,但我真的不知道足够多的术语来获得相关的搜索结果。
不确定 Preact。但我会尝试这样修复它:
const AView = (props) => (
<div>
<p>{props.text}</p>
<BView />
</div>
)
class A extends Component {
constructor() {
super();
this.state = { a: 1 };
}
render() {
return <AView text={this.state.a} />
}
}
const BView = (props) => (
<div>
<p>{props.text}</p>
</div>
)
class B extends Component {
constructor(props) {
super(props);
this.state = { b: 2 };
}
render() {
return <BView text={this.state.b} />
}
}
我正在自学 p/react,我不确定为什么我不能访问组件的状态。
我有一个组件:
const AView = (state,props) => (
<div>
<p>{state.a}</p>
<B />
</div>
)
class A extends Component {
constructor() {
super();
this.state = { a: 1 };
}
render(props,state) {
return <AView a={state.a}/>
}
}
const BView = (state,props) => (
<div>
<p>{state.b}</p>
</div>
)
class B extends Component {
constructor() {
super();
this.state = { b: 2 };
}
render(props,state) {
return <BView b={state.b}/>
}
}
这会呈现具有预期状态 1
的组件 A
,但它不会呈现具有 2
状态的组件 B
(组件 B
只是使用空 <p>
标签渲染)。
但是,如果我使用替代语法,我可以使用状态 2
:
B
class B extends Component {
...
render(props,state) {
return BView(props,state);
}
}
我是不是在概念上遗漏了什么,或者只是有一些我不知道的语法?我试过谷歌搜索,但我真的不知道足够多的术语来获得相关的搜索结果。
不确定 Preact。但我会尝试这样修复它:
const AView = (props) => (
<div>
<p>{props.text}</p>
<BView />
</div>
)
class A extends Component {
constructor() {
super();
this.state = { a: 1 };
}
render() {
return <AView text={this.state.a} />
}
}
const BView = (props) => (
<div>
<p>{props.text}</p>
</div>
)
class B extends Component {
constructor(props) {
super(props);
this.state = { b: 2 };
}
render() {
return <BView text={this.state.b} />
}
}