Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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 为什么单击按钮时我的数据文件无法更改?_Javascript_Json_Reactjs_Import - Fatal编程技术网

Javascript 为什么单击按钮时我的数据文件无法更改?

Javascript 为什么单击按钮时我的数据文件无法更改?,javascript,json,reactjs,import,Javascript,Json,Reactjs,Import,我有一个从data.json文件中读取所有信息的应用程序。我导入文件并通过道具传递到组件 我正在尝试更改语言,更改data.json导入路径 现在我有了一个从“./data/data.json”导入数据的,,但我想要两种语言。 然后,我翻译data.json并创建另外两个数据文件/data/data en.json和/data/data pt.json 并制作了一个按钮在pt和en之间切换 当我点击按钮时,什么都不起作用 import React, { Component } from 'rea

我有一个从data.json文件中读取所有信息的应用程序。我导入文件并通过道具传递到组件

我正在尝试更改语言,更改data.json导入路径

现在我有了一个从“./data/data.json”导入数据的
,但我想要两种语言。 然后,我翻译data.json并创建另外两个数据文件
/data/data en.json
/data/data pt.json

并制作了一个按钮在
pt
en
之间切换

当我点击按钮时,什么都不起作用

import React, { Component } from 'react';
import MyComponent from './MyComponent';
import AnotherComponent from './AnotherComponent';

import data from './data/data.json';
import english from './data/data-en.json';
import portuguese from './data/data-pt.json';

class MyApp extends Component {

  constructor(props) {
    super(props);
    this.state = { isToggleOn: true };
    this.state = { data: english };
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    this.setState(state => ({
      isToggleOn: !state.isToggleOn
    }));
    if (this.state.isToggleOn) {
      this.setState(state => ({
        data: english
      }))
    } else {
      this.setState(state => ({
        data: portuguese
      }))
    }
    console.log(data)
  }

  render() {
    return (
      <div>
        <button onClick={this.handleClick}>
          {this.state.isToggleOn ? 'en' : 'pt'}
        </button>
        <MyComponent data={data.mycomponent} />
        <AnotherComponent data={data.anothercomponent} />
      </div>
    );
  }
}

export default MyApp;
import React,{Component}来自'React';
从“/MyComponent”导入MyComponent;
从“./AnotherComponent”导入另一个组件;
从“./data/data.json”导入数据;
从“/data/data en.json”导入英语;
从“/data/data pt.json”导入葡萄牙语;
类MyApp扩展组件{
建造师(道具){
超级(道具);
this.state={istogleon:true};
this.state={data:english};
this.handleClick=this.handleClick.bind(this);
}
handleClick(){
this.setState(state=>({
isToggleOn:!state.isToggleOn
}));
if(this.state.isToggleOn){
this.setState(state=>({
资料:英文
}))
}否则{
this.setState(state=>({
资料来源:葡萄牙语
}))
}
console.log(数据)
}
render(){
返回(
{this.state.isToggleOn?'en':'pt'}
);
}
}
导出默认MyApp;
如何更改我的数据


谢谢

设置状态是不同步的,因此在您的
handleClick
中,您应该使用回调来获得新状态并执行您的操作:

handleClick() {
  this.setState(state => ({
    isToggleOn: !state.isToggleOn,
    data: state.isToggleOn ? portuguese : english,
  }));
  console.log(data);
}
也不需要在构造函数中两次初始化状态,所以

改变

this.state = { isToggleOn: true };
this.state = { data: english };


这里有更多关于
setState
的信息:

设置状态是不同步的,因此在
handleClick
中,您应该使用回调来获得新状态并执行您的操作:

handleClick() {
  this.setState(state => ({
    isToggleOn: !state.isToggleOn,
    data: state.isToggleOn ? portuguese : english,
  }));
  console.log(data);
}
也不需要在构造函数中两次初始化状态,所以

改变

this.state = { isToggleOn: true };
this.state = { data: english };


这里有更多关于
setState
的信息:

我修复了我的问题,只需在我的组件中放入
这个.state.

<MyComponent data={this.state.data.mycomponent} />
<AnotherComponent data={this.state.data.anothercomponent} />


无论如何,非常感谢。

我修复了我的问题,只需在我的组件中放入此.state。:

<MyComponent data={this.state.data.mycomponent} />
<AnotherComponent data={this.state.data.anothercomponent} />


无论如何,非常感谢。

你好,古斯塔沃,小心点,因为您在构造函数中为
分配了两次。请在构造函数中声明
@格拉马提克是的,我从开发世界开始。感谢您的建议。您好Gustavo,请小心,因为您在构造函数中为该
赋值了两次。state
@格拉马提克是的,我从开发世界开始。谢谢你的建议。我修复了我的问题,只需在我的组件中放入
这个.state。
无论如何,非常感谢。我修复了我的问题,只需在我的组件中放入
这个.state。
无论如何,非常感谢。