Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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 在React中将响应解析为模型对象_Reactjs_Typescript_Axios - Fatal编程技术网

Reactjs 在React中将响应解析为模型对象

Reactjs 在React中将响应解析为模型对象,reactjs,typescript,axios,Reactjs,Typescript,Axios,如果我对某个服务器进行了REST调用,如下所示: componentDidMount() { axios.get<PersonEntry>(`somehost/personentry`) .then(res => { // Can I slice res.data into result ? const result : PersonEntry = res.data;

如果我对某个服务器进行了REST调用,如下所示:

    componentDidMount() {
        axios.get<PersonEntry>(`somehost/personentry`)
          .then(res => {
            // Can I slice res.data into result ? 
            const result : PersonEntry = res.data; 
            this.setState(result)
          })
      }

如果响应包含许多我想忽略的字段,我如何在不拾取字段的情况下将响应“切片”到该对象中?现在,我将把响应中的所有字段都放到我的PersonEntry对象中

是的,您只能映射属性,这需要:

const result = response.map(obj => ({name: obj.name, address: obj.address}));
因此,在
console.log(result)
中,只有您选择的参数

后来:

const final : PersonEntry = result; 

有效吗?

是的,您只能映射属性,这需要:

const result = response.map(obj => ({name: obj.name, address: obj.address}));
因此,在
console.log(result)
中,只有您选择的参数

后来:

const final : PersonEntry = result; 

它有效吗?

否,response.map(obj=>({name:obj.name,address:obj.address}))给出了“属性映射在类型'AxiosResponse'上不存在”我还想知道是否可以在不选取字段的情况下分割PersonEntry对象,如果任何字段匹配,则使其匹配。您能提供所有代码吗?我尝试在我的计算机中复制它。因为res.data是PersonEntry响应对象,而不是数组,所以我使用这样的转换(转换完成所有映射):componentDidMount(){axios.get(
host/someResource
)。然后(res=>{let entry:PersonEntry=PersonEntryTransform.transform(res.data);this.setState(entry)}}有效。你认为呢?PersonEntry有一个构建器,PersonEntryTransform接受接收到的对象并构建并返回PersonEntry,就像这样,例如:if('name'在response&&response['name']!=null){builder.name(response['name']);}我不想使用“assign”,因为我想控制字段并在React中使用内部模型对象。你觉得怎么样?不,response.map(obj=>({name:obj.name,address:obj.address})给出“类型'AxiosResponse'上不存在属性映射”“我还想知道是否有可能在不选取字段的情况下分割PersonEntry对象,并在匹配时进行任何字段匹配。你能提供我所有的代码吗?我尝试在我的机器中复制它。因为res.data是PersonEntry响应对象,而不是数组,所以我使用这样的转换(转换完成所有映射):componentDidMount(){axios.get(
host/someResource
)。然后(res=>{let entry:PersonEntry=PersonEntryTransform.transform(res.data);this.setState(entry)}这就行了。你认为呢?PersonEntry有一个生成器,PersonEntryTransform接受接收到的对象并生成并返回PersonEntry,就像这样,例如:if('name'in response&&response['name']!=null){builder.name(response['name']);}我不想使用“assign”,因为我想控制字段并在React中使用内部模型对象。您认为如何?