Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
Reactjs 从另一个组件初始化组件的状态并获取状态值_Reactjs_React Native - Fatal编程技术网

Reactjs 从另一个组件初始化组件的状态并获取状态值

Reactjs 从另一个组件初始化组件的状态并获取状态值,reactjs,react-native,Reactjs,React Native,我不熟悉reactnative/js的异步机制,我读了很多类似的例子,但我并不清楚。所以请在这里找到我的问题 我试图创建一个组件(在示例“锚定”中调用),并从另一个组件更新其状态(name参数)。 我想从父组件获取“锚定”组件的属性state.name值。 我的问题如下: -锚定组件的创建似乎无法处理组件创建的props.name参数 -我不知道如何从父组件(示例中的应用程序)访问组件状态参数值(his.state.name) 锚组件 class Anchor extends React.Co

我不熟悉reactnative/js的异步机制,我读了很多类似的例子,但我并不清楚。所以请在这里找到我的问题

我试图创建一个组件(在示例“锚定”中调用),并从另一个组件更新其状态(name参数)。 我想从父组件获取“锚定”组件的属性state.name值。 我的问题如下: -锚定组件的创建似乎无法处理组件创建的props.name参数 -我不知道如何从父组件(示例中的应用程序)访问组件状态参数值(his.state.name)

锚组件

class Anchor extends React.Component{
    constructor(props) {
        super(props)
           this.state = {
              name : props.name
           }
        this.name = this.state.name;
    }

 /*
    getName(){
       return this.state.name;
    }
 */  
}  
和应用程序组件:

class App extends React.Component <any> {
  constructor(props) {
    super(props)
    this.state = {
       anchor : undefined,
       items: [
           { text: "Learn JavaScript", done: false },
           { text: "Learn React", done: false },
           { text: "Play around in JSFiddle", done: true },
           { text: "Build something awesome", done: true }
       ]
     }
 }

addAnchor(){
    var anchor = new Anchor('hello');
    this.setState({
        anchor : anchor,
    });
    console.debug('get my anchor name: '+ this.state.anchor.name);
}

render() {
    return (
        <div>
            <h2>Todos:</h2>
                {this.state.anchor.name}
            <ol>
                {this.state.items.map(item => (
                <li key={item.id}>
                <label>
                    <input type="checkbox" disabled readOnly checked={item.done} /> 
                    <span className={item.done ? "done" : ""}>{item.text}</span>
                </label>
                </li>
                ))}
            </ol>
        </div>
    )}
}
类应用程序扩展了React.Component{
建造师(道具){
超级(道具)
此.state={
主播:未定义,
项目:[
{text:“学习JavaScript”,完成:false},
{文本:“学习反应”,完成:错误},
{text:“在JSFiddle中玩”,完成:true},
{文本:“构建一些很棒的东西”,完成:真的}
]
}
}
addAnchor(){
var-anchor=新锚(“你好”);
这是我的国家({
主播:主播,
});
调试('get my anchor name:'+this.state.anchor.name);
}
render(){
返回(
待办事项:
{this.state.anchor.name}
{this.state.items.map(item=>(
  • {item.text}
  • ))} )} }
    以防您想要操纵组件,例如一些简单的POJO

    那么试试这个:

    类锚扩展React.Component{
    render(){
    返回(
    名称:{this.props.Name}
    );
    }
    }
    类应用程序扩展了React.Component{
    建造师(道具){
    超级(道具);
    此.state={
    姓名:'你好',
    项目:[
    {text:'Learn JavaScript',done:false},
    {文本:'Learn React',done:false},
    {text:'Play around in JSFiddle',done:true},
    {文本:'构建一些很棒的东西',完成:真的}
    ]
    };
    }
    addAnchor(){
    const anchor=React.createElement('anchor',{name:this.state.name}',);
    console.log(anchor.props.name);
    }
    render(){
    返回(
    待办事项:
    {this.state.items.map(item=>(
    
  • {item.text}
  • ))} ); } }
    ReactDOM.render(,document.querySelector(#app))
    不使用道具初始化状态。我还尝试使用其他函数更新状态(调用SetState),但不起作用。将父状态作为道具传递。。。。然后再传一个道具。。。。函数。这里有一个例子
    this.setState({name:newName})}/>
    在锚点内部使用this,如下所示
    this.props.name
    访问名称,以及
    this.props.changeName(“示例”)
    将名称更改为example我将尝试一下。在我的项目中,我有一些不需要任何呈现或HTML表示的特定算法。实际上,为此,我想操纵一些组件,比如一些简单的POJO。有没有办法在render?thks之外执行此操作?但是createElement将创建一个与我的锚组件无关的对象元素。使用此解决方案,我无法从原始的锚组件调用某些方法,例如:Anchor.getName()?哦,我现在明白了!那你为什么不创建一个普通的Javascript类呢?你把重点放在了正确的解决方案上!我不确定是否使用带有React Native的简单Javascript类,因为没有关于这方面的文档(我假设只有组件…)。好吧,它起作用了!