GVKun编程网logo

使用React Js中的API实时同步按钮状态(react 同步调用接口)

10

关于使用ReactJs中的API实时同步按钮状态和react同步调用接口的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于IDEA远程代码实时同步(可以自动实时同步)、javascript–

关于使用React Js中的API实时同步按钮状态react 同步调用接口的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于IDEA 远程代码实时同步(可以自动实时同步)、javascript – React App:使用React服务器启动API服务器、React Context API全局状态不会在React中的不同路由之间更新、React-使用react-move实现从下到上进入的动画 +使用react-intl实现国际化等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

使用React Js中的API实时同步按钮状态(react 同步调用接口)

使用React Js中的API实时同步按钮状态(react 同步调用接口)

如何解决使用React Js中的API实时同步按钮状态?

所以我有两个API,一个是Post API,我链接到了Toggle按钮,每当单击按钮时,它都会向Post API发送1或0值,而我还有其他GET API,我可以从其中获取值的状态我正在使用相同的按钮来检查天气是0还是1。 问题是我的代码可以工作,但是无法同步,因为当我单击按钮时,它会通过post API更新状态值,但先前的GET Request会使它再次回到先前的状态。因此渲染按钮会闪烁几次,然后稳定下来。代码如下。任何解决方案将不胜感激。提前致谢。 附言在componentDidMount()上,我正在调用GET请求,并且handleChange链接到按钮

class Test extends React. Component {
    constructor(props) {
        super(props);
            this. State = {
                checked: false,value:bool,}
            
            this.handleChange = this.handleChange.bind(this);
    }

    componentDidMount() {
        this.intervalId = setInterval(()=> this.loadData(),1000);
        this.loadData();
         
      }
  
      componentwillUnmount() {
        clearInterval(this.intervalId);
      }
  
      async loadData() {
        const headers = { 
            ''api-key'': ''key'',};
        try {
        const response = await fetch(''url'',{ headers })
        const json =  await response.json();
        const valueUp = json.data ;
        
        
        
        if( valueUp ===1 ) {
            this.setState({value: valueUp,checked: true})
        }
        else if (valueUp === 0) {
                this.setState({value: valueUp,checked: false})
        }

        }
        catch (err){ console.log(err);}
    
        
    }


    handleChange() {
        if (this.state.value === 0) {
        this.setState({ value:1,checked: true },() => {
            this.afterSetStateFinished();
            
        })
        
        }
        else if (this.state.value === 1) {
            this.setState({ value:0,checked: false },() => {

                this.afterSetStateFinished();
            })
        }
        
        
        
        
    };
        
    afterSetStateFinished(){
        const article = { 
            "body": this.state.value
             }
        const headers = { 
            ''api-key'': ''key'',};
         axios.post(''url'',article,{ headers })
            .then(function(response) {console.log(response);
            })
    }   
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

IDEA 远程代码实时同步(可以自动实时同步)

IDEA 远程代码实时同步(可以自动实时同步)

前言

开发时一般的平台都是 windows,但 windows 对开发极其不友好,一般都会在本地开启虚拟机,安装上 linux 环境进行项目的部署测试。下面介绍一种 windows 主机与 linux 虚拟机代码同步的方法。这个工具适用于 jerbrains 公司旗下的很多产品,比如 idea、webstrom、phpstrom 等。但是要注意你安装的 IDE 必须是专业版的,社区版的 IDE 是没有这个代码同步功能的哦!

前提条件:

在 windows 与 linux 系统下都有着项目的同一份代码。

比如:

我 Linux 系统项目代码地址:/data/projects/

windows 系统项目地址:D:/data/projects/

这两个文件夹里的项目文件要完全一样哦。

 

配置步骤:

1、打开 windows 主机的 idea(我这里是 PhpStorm),打开上面 windows 系统项目地址:D:/data/projects/,然后选择 tools->deployment->brower remote host。如下图:

2、点击右上方的三个点,新建一个连接。如下图:

 

3、选择添加服务器连接的类型:这里选择 SFTP,如下图:、

 

 

然后点击确定。

 

 4、然后依次填写服务器信息:具体如下图:


 

 

 5、很关键的一步:切换到 Mapping 面板:

 

 

 6、代码修改后自动上传配置:

 

以上就配置完成了。然后在本地项目新建文件、修改文件、删除文件等操作,都会自动实时同步到 Linux 系统上了。

 

具体不清楚的可以查看我的博客:http://blog.huanghui.xyz

 

javascript – React App:使用React服务器启动API服务器

javascript – React App:使用React服务器启动API服务器

我正在研究一个非常简单的

我正在使用

但我想知道是否有办法使用

我用Google搜索并环顾四周,但我似乎可以找到任何相关信息(也不确认或反驳).

有没有人对此有任何意见?
(我知道这不是一个正确的问题,但我似乎无法找到任何信息来关闭唠叨的奇迹)

解决方法:

有一种方法可以启动API服务器并做出反应.在我的案例server.js中的快速主文件中.您需要安装webpack-dev-middleware和webpack-hot-middleware.

// server.js
import path from ''path'';
import express from ''express'';
import webpack from ''webpack'';
import webpackDevMiddleware from ''webpack-dev-middleware'';
import webpackHotMiddleware from ''webpack-hot-middleware'';
import config from ''./webpack.config'';

const app = express(),
  disT_DIR = path.join(__dirname, ''client''),
  HTML_FILE = path.join(disT_DIR, ''index.html''),
  compiler = webpack(config),
  isDevelopment = process.env.NODE_ENV === ''development'';

if (isDevelopment) {
  app.use(webpackDevMiddleware(compiler, {
    publicPath: config.output.publicPath,
  }));

  app.use(webpackHotMiddleware(compiler));
} else {
  app.use(express.static(disT_DIR));
}

app.get(''/'', (req, res) => res.sendFile(HTML_FILE));
app.get(''*'', (req, res) => res.redirect(301, ''/''));

app.listen(process.env.PORT || 4200);

然后在您的webpack.config.js中,您可以按照以下设置进行操作:

const path = require(''path'');
const webpack = require(''webpack'');

process.env.NODE_ENV = process.env.NODE_ENV || ''development'';

module.exports = {
  entry: [
    ''webpack-hot-middleware/client'',
    ''./app/app.jsx'',
  ],
  externals: {
    jquery: ''jQuery'',
    ''react/addons'': ''react'',
    ''react/lib/ExecutionEnvironment'': ''react'',
    ''react/lib/ReactContext'': ''react'',
  },
  output: {
    path: path.resolve(__dirname, ''client''),
    filename: ''bundle.js'',
    publicPath: ''/'',
    sourceMapFilename: ''bundle.map'',
  },
  devtool: process.env.NODE_ENV === ''production''
    ? undefined : ''cheap-module-eval-source-map'',
  resolve: {
    modules: [''node_modules'', ''./app/components''],
    extensions: [''.js'', ''.jsx''],
  },
  module: {
    rules: [
      {
        test: /(\.js$|\.jsx$)/,
        exclude: /(node_modules|bower_components)/,
        use: [
          {
            loader: ''babel-loader'',
            options: {
              presets: [''react'', ''es2015'', ''stage-0'', ''airbnb''],
            },
          },
        ],
      },
      {
        test: /\.scss$/,
        use: [''style-loader'', ''css-loader'', ''sass-loader''],
      },
      {
        test: /\.(eot|svg|ttf|woff|woff2)(\?v=\d+\.\d+\.\d+)?$/,
        use: {
          loader: ''file-loader'',
          options: {
            name: ''[name].[ext]''
          }
        }
      }
    ],
  },
  plugins: [
    new webpack.optimize.OccurrenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoEmitOnErrorsPlugin(),
    new webpack.ProvidePlugin({
      $: ''jquery'',
      jQuery: ''jquery'',
    }),
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: true,
      minimize: true,
      compressor: {
        warnings: false,
      },
    }),
    new webpack.DefinePlugin({
      ''process.env'': {
        NODE_ENV: JSON.stringify(process.env.NODE_ENV)
      },
    }),
  ],
};

然后在你的package.json脚本中:

// package.json
"scripts": {
    "build": "webpack",
    "postinstall": "npm run build",
    "start": "babel-node server.js",
    "start:dev": "nodemon -e js --exec babel-node -- ./server.js",
    "test": "karma start"
  }

现在,当您启动Express服务器时,您的API和react将一起运行.

总结

以上是小编为你收集整理的javascript – React App:使用React服务器启动API服务器全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

原文地址:https://codeday.me/bug/20190701/1348393.html

React Context API全局状态不会在React中的不同路由之间更新

React Context API全局状态不会在React中的不同路由之间更新

如何解决React Context API全局状态不会在React中的不同路由之间更新?

当我从Page1递增状态时,它会为Page1更新。但是当我进入Page2时状态再次变为0。我没有从Page1获得更新状态。有什么方法可以创建跨路由的全局状态?

context.js

import React,{ useState } from "react";
export const Context = React.createContext();

export const ContextProvider = ({ children }) => {
  const [state,setstate] = useState(0);
  
  return (
    <Context.Provider value={{ state,setstate }}>{children}</Context.Provider>
  );
};

Page1.js

 const Page1 = () => {
      const { state,setstate } = useContext(Context);
      console.log("Page1: ",state);
       return (
        <div>
          <h1>PAGE 1</h1>
          {state}
          <button onClick={() => setstate(state + 1)}>INC</button>
        </div>
       );
     };

Page2.js

const Page2 = () => {
  const { state,setstate } = useContext(Context);
  return (
    <div>
      <h1>PAGE 2</h1>
      {state}

      <button onClick={() => setstate(state + 1)}>INC</button>
    </div>
  );
};

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

React-使用react-move实现从下到上进入的动画 +使用react-intl实现国际化

React-使用react-move实现从下到上进入的动画 +使用react-intl实现国际化

一、使用react-move实现从下到上进入的动画

1.引入:
import { Animate } from ''react-move'';

  

2.规定要添加动画的元素的useState:
const [show, setShow] = useState(false);

    useEffect(() => {
        setShow(true);
    }, []);
3.元素代码:
<Animate
                                start={{
                                    opacity: 0,
                                    y: index===0 ? 100 : 300
                                }}
                                update={() => ({
                                    opacity: 1,
                                    y: [show ? 0 : index===0 ? 100 : 300],
                                    timing: { duration: 600, ease: easeQuadInOut, delay: index===0 ? 1000 : 2000 }
                                })}
                                >
                                    {state => (
                                        <div className=''section-joinus__select'' key={item.country} style={{
                                                transform: `translateY(${state.y}%)`,opacity: 1
                                            }}>
                                            <div className=''country''><i className=''i-pos''><Location/></i><span>{item.country}</span><i className=''i-up''><ArrowUp/></i></div>
                                            <div className=''option'' style={{height: index===0 ? options ? ''0'': ''200px'': options? ''200px'': ''0''}}>
                                                <ul>
                                                    <li>{item.work1}</li>
                                                    <li>{item.work2}</li>
                                                </ul>
                                                <button>{item.btntxt}</button>
                                            </div>
                                        </div>
                                    )}
                                </Animate>

4.插件2019-09-19官网

https://www.npmjs.com/package/react-move



二、国际化

 

1.安装依赖

npm的话命令是:npm install react-intl --save

yarn的话命令是:yarn add react-intl --save

2.src文件目录下新建locale目录,新增中英文两个js文件:

 

 一个用来规定英文,一个规定中文:

const en_US = {  
  ''component.about.btn'': ''英文示例'',
}
export default en_US;

  

const zh_CN = {
  ''component.about.btn'': ''中文示例'',
}
export default zh_CN;

前面是id,用来在组件中引用,后面是对应的文字。

 

3.app.js中引入包裹的组件与两个js语言文件,并进行当前语言环境的判断:

import { IntlProvider } from ''react-intl'';
import zh_CN from ''../../locales/zh-CN'';
import en_US from ''../../locales/en-US'';
const App = () => {
    const locale = navigator.language.split(''_'')[0] || ''en-US'';
    return (
        <React.Fragment>
            <IntlProvider locale={locale === ''zh-CN'' ? ''zh'' : ''en''} messages={locale === ''zh-CN'' ? zh_CN : en_US}> 
                <Nav />
                <div className="page-content">
                    <About />
                </div>
                <Footer />
            </IntlProvider>
        </React.Fragment>
    );
};
export default App;

  

4.组件中使用FormattedMessage ,规定属性id即可:

import { FormattedMessage } from ''react-intl'';

 

 

5.官网npm地址:

https://www.npmjs.com/package/react-intl

关于使用React Js中的API实时同步按钮状态react 同步调用接口的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于IDEA 远程代码实时同步(可以自动实时同步)、javascript – React App:使用React服务器启动API服务器、React Context API全局状态不会在React中的不同路由之间更新、React-使用react-move实现从下到上进入的动画 +使用react-intl实现国际化等相关知识的信息别忘了在本站进行查找喔。

本文标签: