代码之家  ›  专栏  ›  技术社区  ›  Amir

如何在react中转换<script>标记?

  •  0
  • Amir  · 技术社区  · 8 年前

    作为我的应用程序的一部分,我有一个如下所示的标签。我想知道我应该如何将其转换为react吗?

    我能分开它是一个javascript文件并加载到这个文件吗?如果答案是肯定的,你能告诉我怎么做吗?

    class App extends Component {
      render() {
        return (
          <div className="App">
      <section class="abcContainer">
            <div class="card border-primary mb-3" style="max-width: 20rem;">
                <div class="card-header">Toolbox</div>
                <div class="card-body">
                    <div class="col col-6">
                        <ul class="ml4 js-sortable-copy sortable list flex flex-column list-reset" aria-dropeffect="move">
                            <li class="p1 mb1 yellow bg-maroon" style="position: relative; z-index: 10" draggable="true" role="option" aria-grabbed="false">Item 1</li>
                            <li class="p1 mb1 yellow bg-maroon" style="position: relative; z-index: 10" draggable="true" role="option" aria-grabbed="false">Item 2</li>
    
                        </ul>
                    </div>
                </div>
            </div>
            <div class="jumbotron">
                <div class="col col-6">
                    <h2 class="h4 mt1">Copy items here</h2>
                    <ul class="p2 border maroon border-maroon js-sortable-copy-target sortable list flex flex-column list-reset" aria-dropeffect="move"></ul>
                </div>
            </div>
    
        </section>
    
    
        <script>
            sortable('.js-sortable-copy', {
                forcePlaceholderSize: true,
                copy: true,
                acceptFrom: false,
                placeholderClass: 'mb1 bg-navy border border-yellow',
            });
            sortable('.js-sortable-copy-target', {
                forcePlaceholderSize: true,
                acceptFrom: '.js-sortable-copy,.js-sortable-copy-target',
                placeholderClass: 'mb1 border border-maroon',
            });
            sortable('.js-grid', {
                forcePlaceholderSize: true,
                placeholderClass: 'col col-4 border border-maroon'
            });
        </script>
          </div>
        );
      }
    }
    
    export default App;
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Bhojendra Rauniyar    8 年前

    你可以叫他们进来 componentDidMount

    mySortable() {
      // sortable() scripts
    }
    
    componentDidMount() {
      window.addEventListener('onload', this.mySortable)
    }
    

    然后确保删除中的侦听器 componentWillUnmount 挂钩:

    componentWillUnmount() {
      window.removeEventListener('onload', this.mySortable)
    }
    
        2
  •  1
  •   Ross Sheppard    8 年前

    我将检查是否有一个npm包,用于您在该脚本中使用的库,然后为该组件导入它。例如,如果这是sortable.js https://www.npmjs.com/package/sortablejs . 这使得事情更加模块化。

    否则,我会用函数创建一个单独的文件,导入它们,并通过在生命周期方法(componentDidMount或render[depending])中的函数运行数据/元素,或者使用onHover、onClick等属性,将它们附加到需要使用它们的元素上。

    如果它们是整个web应用程序的函数,请将脚本标记复制到index.html文件中。