Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将来自React上下文提供程序的状态置于常量中_Javascript_Reactjs - Fatal编程技术网

Javascript 将来自React上下文提供程序的状态置于常量中

Javascript 将来自React上下文提供程序的状态置于常量中,javascript,reactjs,Javascript,Reactjs,我正在从我的应用程序提供商接收状态,但我需要const或我的子组件状态中的状态。但我找不到办法 例如,我想要这样的东西: const admin = <MyContext.Consumer>{() => this.setState({username: (context => context.state.name)})} </MyContext.Consumer>

我正在从我的应用程序提供商接收状态,但我需要const或我的子组件状态中的状态。但我找不到办法

例如,我想要这样的东西:

const admin =  <MyContext.Consumer>{() => 
                this.setState({username: (context => 
                context.state.name)})}
               </MyContext.Consumer>;
const admin={()=>
this.setState({username:(context=>
context.state.name)})
;
或:

const admin={(context)=>context.state.name}
admin将包含状态名称的值

我知道我的方法行不通,但我应该采取什么方法来制作这样的东西?

只能在渲染中使用,它提供的值只能在传递给它的子函数中访问。如果您需要访问其他生命周期挂钩,例如使用它调用setState,那么有几个选项。如果您使用的是React 16.6(我写这篇文章时的最新版本),那么可以使用(注意,它是contextType单数形式,而不是contextTypes复数形式)

在React 16.6之前,您可以将组件包装到另一个组件中,然后通过主组件上的道具与值交互:

export const MyComponent = props => (
  <MyContext.Consumer>
    {context => <InnerComponent someExtraProp={context} {...props} />}
  </MyContext.Consumer>
);

class InnerComponent extends Component {
  componentDidMount() {
    this.setState({
      username: this.props.someExtraProp.state.name,
    });
  }
}
export const MyComponent=props=>(
{context=>}
);
类InnerComponent扩展组件{
componentDidMount(){
这是我的国家({
用户名:this.props.someextrop.state.name,
});
}
}
只能在渲染中使用,它提供的值只能在传递给它的子函数中访问。如果您需要访问其他生命周期挂钩,例如使用它调用setState,那么有几个选项。如果您使用的是React 16.6(我写这篇文章时的最新版本),那么可以使用(注意,它是contextType单数形式,而不是contextTypes复数形式)

在React 16.6之前,您可以将组件包装到另一个组件中,然后通过主组件上的道具与值交互:

export const MyComponent = props => (
  <MyContext.Consumer>
    {context => <InnerComponent someExtraProp={context} {...props} />}
  </MyContext.Consumer>
);

class InnerComponent extends Component {
  componentDidMount() {
    this.setState({
      username: this.props.someExtraProp.state.name,
    });
  }
}
export const MyComponent=props=>(
{context=>}
);
类InnerComponent扩展组件{
componentDidMount(){
这是我的国家({
用户名:this.props.someextrop.state.name,
});
}
}
export const MyComponent = props => (
  <MyContext.Consumer>
    {context => <InnerComponent someExtraProp={context} {...props} />}
  </MyContext.Consumer>
);

class InnerComponent extends Component {
  componentDidMount() {
    this.setState({
      username: this.props.someExtraProp.state.name,
    });
  }
}