我有commentBox.jsx文件,包含以下代码:
var CommentBox = React.createClass( {
render: function () {
return (
<div className="commentBox">
<h1>Comments</h1>
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
在index.html中,我想渲染此组件:
<div id="content"></div>
<script type="text/babel" src="scripts/commentBox.jsx"></script>
<script type="text/babel">
ReactDOM.render(<CommentBox />, document.getElementById( 'content' ) );
</script>
Run Code Online (Sandbox Code Playgroud)
但我收到错误:"CommentBox未定义"; 为什么这不起作用?如果我将所有代码放在一个文件(commentBox.js) - 它将工作.
我从服务器内容到json对象字段,它是html <style></style>和<script></script>标签,我想这样执行它:
[innerHtml] ="content | sanitize",但<script></script>标签不执行.它可以使它工作吗?
我的消毒管看起来像这样:
import {Pipe} from '@angular/core';
import {DomSanitizationService} from '@angular/platform-browser';
@Pipe({
name: 'sanitize',
pure: true
})
export class Sanitize {
constructor(private sanitizer: DomSanitizationService) {
}
transform(html: string) {
return this.sanitizer.bypassSecurityTrustHtml(html);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道,DomSanitizationService中有bypassSecurityTrustScript函数,但我怎么能在我的情况下使用它呢?
问题
嗨,我正在尝试编写一个插件并使用 ast 来解析文件。但我无法对代码进行更改。例如,此代码不会将 div 更改为标签。更改 ast 的正确方法是什么?
apply(compiler) {
compiler.hooks.normalModuleFactory.tap('MyPlugin', (factory) => {
factory.hooks.parser.for('javascript/auto').tap('MyPlugin', (parser, options) => {
parser.hooks.program.tap('MyPlugin', (ast, comments) => {
if (parser.state &&
parser.state.module &&
parser.state.module.resource.indexOf('node_modules') === -1) {
if (parser.state.module.resource.endsWith('tsx')) {
var g = ast.body.filter(n=> n.type === 'ExportNamedDeclaration');
for (let a of g) {
var decl = a.declaration.declarations;
if (decl && decl[0]) {
decl[0].init.body.body[0].argument.arguments[0].raw = 'label';
decl[0].init.body.body[0].argument.arguments[0].value = 'label';
}
}
}
}
});
});
});
}`
Run Code Online (Sandbox Code Playgroud)
我只需要在返回块中将 div 更改为标签或将 data-attr 添加到 div。我不想使用正则表达式并替换所有文件内容,我想用 ast 制作它。MyComponent.tsx …
我有以下型号的问题:
public class ProjectPage
{
[Key]
public Guid Id { get; set; }
public Guid? HeaderId { get; set; }
public ProjectPage Header { get; set; }
public Guid? FooterId { get; set; }
public ProjectPage Footer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在模型创建我有这个:
modelBuilder.Entity<ProjectPage>().HasOptional(p => p.Header).WithMany().HasForeignKey(p => p.HeaderId).WillCascadeOnDelete(true);
modelBuilder.Entity<ProjectPage>().HasOptional(p => p.Footer).WithMany().HasForeignKey(p => p.FooterId).WillCascadeOnDelete(true);
Run Code Online (Sandbox Code Playgroud)
但我无法更新数据库.我在Package Manager控制台中遇到以下错误:
在表'ProjectPages'上引入FOREIGN KEY约束'FK_dbo.ProjectPages_dbo.ProjectPages_FooterId'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.
有人可以解释如何删除项目页面(可以是另一个项目页面中的页脚或页眉)?
我有SQL查询:
INSERT into ProjectFiles (Id,ProjectId,Index) VALUES (@Id,@ProjectId,@Index)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试插入对象时,它会抛出异常:
"索引"附近的语法不正确.如果这是作为表提示的一部分,则现在需要A WITH关键字和括号.有关正确的语法,请参阅SQL Server联机丛书
我认为这是关于Index,因为sql有命令index.我怎么能对sql说,这是我的专栏?
c# ×2
javascript ×2
angular ×1
asp.net-mvc ×1
babeljs ×1
html ×1
react-jsx ×1
reactjs ×1
sql ×1
sql-server ×1
webpack ×1
webpack-4 ×1